import { EncodingType, TEALStack } from "../types"; import { Interpreter } from "./interpreter"; import { Op } from "./opcode"; export declare class Pragma extends Op { readonly version: number; readonly line: number; /** * Store Pragma version * @param args Expected arguments: ["version", version number] * @param line line number in TEAL file * @param interpreter interpreter object */ constructor(args: string[], line: number, interpreter: Interpreter); getVersion(): number; execute(stack: TEALStack): void; } export declare class Len extends Op { readonly line: number; /** * Asserts 0 arguments are passed. * @param args Expected arguments: [] // none * @param line line number in TEAL file */ constructor(args: string[], line: number); execute(stack: TEALStack): void; } export declare class Add extends Op { readonly line: number; /** * Asserts 0 arguments are passed. * @param args Expected arguments: [] // none * @param line line number in TEAL file */ constructor(args: string[], line: number); execute(stack: TEALStack): void; } export declare class Sub extends Op { readonly line: number; /** * Asserts 0 arguments are passed. * @param args Expected arguments: [] // none * @param line line number in TEAL file */ constructor(args: string[], line: number); execute(stack: TEALStack): void; } export declare class Div extends Op { readonly line: number; /** * Asserts 0 arguments are passed. * @param args Expected arguments: [] // none * @param line line number in TEAL file */ constructor(args: string[], line: number); execute(stack: TEALStack): void; } export declare class Mul extends Op { readonly line: number; /** * Asserts 0 arguments are passed. * @param args Expected arguments: [] // none * @param line line number in TEAL file */ constructor(args: string[], line: number); execute(stack: TEALStack): void; } export declare class Arg extends Op { readonly _arg: Uint8Array; readonly line: number; /** * Gets the argument value from interpreter.args array. * store the value in _arg variable * @param args Expected arguments: [argument number] * @param line line number in TEAL file * @param interpreter interpreter object */ constructor(args: string[], line: number, interpreter: Interpreter); execute(stack: TEALStack): void; } export declare class Bytecblock extends Op { readonly bytecblock: Uint8Array[]; readonly interpreter: Interpreter; readonly line: number; /** * Store blocks of bytes in bytecblock * @param args Expected arguments: [bytecblock] // Ex: ["value1" "value2"] * @param line line number in TEAL file * @param interpreter interpreter object */ constructor(args: string[], line: number, interpreter: Interpreter); execute(stack: TEALStack): void; } export declare class Bytec extends Op { readonly index: number; readonly interpreter: Interpreter; readonly line: number; /** * Sets index according to arguments passed * @param args Expected arguments: [byteblock index number] * @param line line number in TEAL file * @param interpreter interpreter object */ constructor(args: string[], line: number, interpreter: Interpreter); execute(stack: TEALStack): void; } export declare class Intcblock extends Op { readonly intcblock: Array; readonly interpreter: Interpreter; readonly line: number; /** * Stores block of integer in intcblock * @param args Expected arguments: [integer block] // Ex: [100 200] * @param line line number in TEAL file * @param interpreter interpreter object */ constructor(args: string[], line: number, interpreter: Interpreter); execute(stack: TEALStack): void; } export declare class Intc extends Op { readonly index: number; readonly interpreter: Interpreter; readonly line: number; /** * Sets index according to arguments passed * @param args Expected arguments: [intcblock index number] * @param line line number in TEAL file * @param interpreter interpreter object */ constructor(args: string[], line: number, interpreter: Interpreter); execute(stack: TEALStack): void; } export declare class Mod extends Op { readonly line: number; /** * Asserts 0 arguments are passed. * @param args Expected arguments: [] // none * @param line line number in TEAL file */ constructor(args: string[], line: number); execute(stack: TEALStack): void; } export declare class BitwiseOr extends Op { readonly line: number; /** * Asserts 0 arguments are passed. * @param args Expected arguments: [] // none * @param line line number in TEAL file */ constructor(args: string[], line: number); execute(stack: TEALStack): void; } export declare class BitwiseAnd extends Op { readonly line: number; /** * Asserts 0 arguments are passed. * @param args Expected arguments: [] // none * @param line line number in TEAL file */ constructor(args: string[], line: number); execute(stack: TEALStack): void; } export declare class BitwiseXor extends Op { readonly line: number; /** * Asserts 0 arguments are passed. * @param args Expected arguments: [] // none * @param line line number in TEAL file */ constructor(args: string[], line: number); execute(stack: TEALStack): void; } export declare class BitwiseNot extends Op { readonly line: number; /** * Asserts 0 arguments are passed. * @param args Expected arguments: [] // none * @param line line number in TEAL file */ constructor(args: string[], line: number); execute(stack: TEALStack): void; } export declare class Store extends Op { readonly index: number; readonly interpreter: Interpreter; readonly line: number; /** * Stores index number according to arguments passed * @param args Expected arguments: [index number] * @param line line number in TEAL file * @param interpreter interpreter object */ constructor(args: string[], line: number, interpreter: Interpreter); execute(stack: TEALStack): void; } export declare class Load extends Op { readonly index: number; readonly interpreter: Interpreter; readonly line: number; /** * Stores index number according to arguments passed. * @param args Expected arguments: [index number] * @param line line number in TEAL file * @param interpreter interpreter object */ constructor(args: string[], line: number, interpreter: Interpreter); execute(stack: TEALStack): void; } export declare class Err extends Op { readonly line: number; /** * Asserts 0 arguments are passed. * @param args Expected arguments: [] // none * @param line line number in TEAL file */ constructor(args: string[], line: number); execute(stack: TEALStack): void; } export declare class Sha256 extends Op { readonly line: number; /** * Asserts 0 arguments are passed. * @param args Expected arguments: [] // none * @param line line number in TEAL file */ constructor(args: string[], line: number); execute(stack: TEALStack): void; } export declare class Sha512_256 extends Op { readonly line: number; /** * Asserts 0 arguments are passed. * @param args Expected arguments: [] // none * @param line line number in TEAL file */ constructor(args: string[], line: number); execute(stack: TEALStack): void; } export declare class Keccak256 extends Op { readonly line: number; /** * Asserts 0 arguments are passed. * @param args Expected arguments: [] // none * @param line line number in TEAL file */ constructor(args: string[], line: number); execute(stack: TEALStack): void; } export declare class Ed25519verify extends Op { readonly line: number; /** * Asserts 0 arguments are passed. * @param args Expected arguments: [] // none * @param line line number in TEAL file */ constructor(args: string[], line: number); execute(stack: TEALStack): void; } export declare class LessThan extends Op { readonly line: number; /** * Asserts 0 arguments are passed. * @param args Expected arguments: [] // none * @param line line number in TEAL file */ constructor(args: string[], line: number); execute(stack: TEALStack): void; } export declare class GreaterThan extends Op { readonly line: number; /** * Asserts 0 arguments are passed. * @param args Expected arguments: [] // none * @param line line number in TEAL file */ constructor(args: string[], line: number); execute(stack: TEALStack): void; } export declare class LessThanEqualTo extends Op { readonly line: number; /** * Asserts 0 arguments are passed. * @param args Expected arguments: [] // none * @param line line number in TEAL file */ constructor(args: string[], line: number); execute(stack: TEALStack): void; } export declare class GreaterThanEqualTo extends Op { readonly line: number; /** * Asserts 0 arguments are passed. * @param args Expected arguments: [] // none * @param line line number in TEAL file */ constructor(args: string[], line: number); execute(stack: TEALStack): void; } export declare class And extends Op { readonly line: number; /** * Asserts 0 arguments are passed. * @param args Expected arguments: [] // none * @param line line number in TEAL file */ constructor(args: string[], line: number); execute(stack: TEALStack): void; } export declare class Or extends Op { readonly line: number; /** * Asserts 0 arguments are passed. * @param args Expected arguments: [] // none * @param line line number in TEAL file */ constructor(args: string[], line: number); execute(stack: TEALStack): void; } export declare class EqualTo extends Op { readonly line: number; /** * Asserts 0 arguments are passed. * @param args Expected arguments: [] // none * @param line line number in TEAL file */ constructor(args: string[], line: number); execute(stack: TEALStack): void; } export declare class NotEqualTo extends Op { readonly line: number; /** * Asserts 0 arguments are passed. * @param args Expected arguments: [] // none * @param line line number in TEAL file */ constructor(args: string[], line: number); execute(stack: TEALStack): void; } export declare class Not extends Op { readonly line: number; /** * Asserts 0 arguments are passed. * @param args Expected arguments: [] // none * @param line line number in TEAL file */ constructor(args: string[], line: number); execute(stack: TEALStack): void; } export declare class Itob extends Op { readonly line: number; /** * Asserts 0 arguments are passed. * @param args Expected arguments: [] // none * @param line line number in TEAL file */ constructor(args: string[], line: number); execute(stack: TEALStack): void; } export declare class Btoi extends Op { readonly line: number; /** * Asserts 0 arguments are passed. * @param args Expected arguments: [] // none * @param line line number in TEAL file */ constructor(args: string[], line: number); execute(stack: TEALStack): void; } export declare class Addw extends Op { readonly line: number; /** * Asserts 0 arguments are passed. * @param args Expected arguments: [] // none * @param line line number in TEAL file */ constructor(args: string[], line: number); execute(stack: TEALStack): void; } export declare class Mulw extends Op { readonly line: number; /** * Asserts 0 arguments are passed. * @param args Expected arguments: [] // none * @param line line number in TEAL file */ constructor(args: string[], line: number); execute(stack: TEALStack): void; } export declare class Pop extends Op { readonly line: number; /** * Asserts 0 arguments are passed. * @param args Expected arguments: [] // none * @param line line number in TEAL file */ constructor(args: string[], line: number); execute(stack: TEALStack): void; } export declare class Dup extends Op { readonly line: number; /** * Asserts 0 arguments are passed. * @param args Expected arguments: [] // none * @param line line number in TEAL file */ constructor(args: string[], line: number); execute(stack: TEALStack): void; } export declare class Dup2 extends Op { readonly line: number; /** * Asserts 0 arguments are passed. * @param args Expected arguments: [] // none * @param line line number in TEAL file */ constructor(args: string[], line: number); execute(stack: TEALStack): void; } export declare class Concat extends Op { readonly line: number; /** * Asserts 0 arguments are passed. * @param args Expected arguments: [] // none * @param line line number in TEAL file */ constructor(args: string[], line: number); execute(stack: TEALStack): void; } export declare class Substring extends Op { readonly start: bigint; readonly end: bigint; readonly line: number; /** * Stores values of `start` and `end` according to arguments passed. * @param args Expected arguments: [start index number, end index number] * @param line line number in TEAL file */ constructor(args: string[], line: number); execute(stack: TEALStack): void; } export declare class Substring3 extends Op { readonly line: number; /** * Asserts 0 arguments are passed. * @param args Expected arguments: [] // none * @param line line number in TEAL file */ constructor(args: string[], line: number); execute(stack: TEALStack): void; } export declare class Txn extends Op { readonly field: string; readonly idx: number | undefined; readonly interpreter: Interpreter; readonly line: number; /** * Set transaction field according to arguments passed * @param args Expected arguments: [transaction field] * // Note: Transaction field is expected as string instead of number. * For ex: `Fee` is expected and `0` is not expected. * @param line line number in TEAL file * @param interpreter interpreter object */ constructor(args: string[], line: number, interpreter: Interpreter); execute(stack: TEALStack): void; } export declare class Gtxn extends Op { readonly field: string; readonly txIdx: number; readonly txFieldIdx: number | undefined; readonly interpreter: Interpreter; readonly line: number; /** * Sets `field`, `txIdx` values according to arguments passed. * @param args Expected arguments: [transaction group index, transaction field] * // Note: Transaction field is expected as string instead of number. * For ex: `Fee` is expected and `0` is not expected. * @param line line number in TEAL file * @param interpreter interpreter object */ constructor(args: string[], line: number, interpreter: Interpreter); execute(stack: TEALStack): void; } /** * push value of an array field from current transaction to stack * push to stack [...stack, value of an array field ] * NOTE: a) for arg="Accounts" index 0 means sender's address, and index 1 means first address * from accounts array (eg. txna Accounts 1: will push 1st address from Accounts[] to stack) * b) for arg="ApplicationArgs" index 0 means first argument for application array (normal indexing) */ export declare class Txna extends Op { readonly field: string; readonly idx: number; readonly interpreter: Interpreter; readonly line: number; /** * Sets `field` and `idx` values according to arguments passed. * @param args Expected arguments: [transaction field, transaction field array index] * // Note: Transaction field is expected as string instead of number. * For ex: `Fee` is expected and `0` is not expected. * @param line line number in TEAL file * @param interpreter interpreter object */ constructor(args: string[], line: number, interpreter: Interpreter); execute(stack: TEALStack): void; } /** * push value of a field to the stack from a transaction in the current transaction group * push to stack [...stack, value of field] * NOTE: for arg="Accounts" index 0 means sender's address, and index 1 means first address from accounts * array (eg. gtxna 0 Accounts 1: will push 1st address from Accounts[](from the 1st tx in group) to stack) * b) for arg="ApplicationArgs" index 0 means first argument for application array (normal indexing) */ export declare class Gtxna extends Op { readonly field: string; readonly txIdx: number; readonly idx: number; readonly interpreter: Interpreter; readonly line: number; /** * Sets `field`(Transaction Field), `idx`(Array Index) and * `txIdx`(Transaction Group Index) values according to arguments passed. * @param args Expected arguments: * [transaction group index, transaction field, transaction field array index] * // Note: Transaction field is expected as string instead of number. * For ex: `Fee` is expected and `0` is not expected. * @param line line number in TEAL file * @param interpreter interpreter object */ constructor(args: string[], line: number, interpreter: Interpreter); execute(stack: TEALStack): void; } export declare class Label extends Op { readonly label: string; readonly line: number; /** * Sets `label` according to arguments passed. * @param args Expected arguments: [label] * @param line line number in TEAL file */ constructor(args: string[], line: number); execute(stack: TEALStack): void; } export declare class Branch extends Op { readonly label: string; readonly interpreter: Interpreter; readonly line: number; /** * Sets `label` according to arguments passed. * @param args Expected arguments: [label of branch] * @param line line number in TEAL file * @param interpreter interpreter object */ constructor(args: string[], line: number, interpreter: Interpreter); execute(stack: TEALStack): void; } export declare class BranchIfZero extends Op { readonly label: string; readonly interpreter: Interpreter; readonly line: number; /** * Sets `label` according to arguments passed. * @param args Expected arguments: [label of branch] * @param line line number in TEAL file * @param interpreter interpreter object */ constructor(args: string[], line: number, interpreter: Interpreter); execute(stack: TEALStack): void; } export declare class BranchIfNotZero extends Op { readonly label: string; readonly interpreter: Interpreter; readonly line: number; /** * Sets `label` according to arguments passed. * @param args Expected arguments: [label of branch] * @param line line number in TEAL file * @param interpreter interpreter object */ constructor(args: string[], line: number, interpreter: Interpreter); execute(stack: TEALStack): void; } export declare class Return extends Op { readonly interpreter: Interpreter; readonly line: number; /** * Asserts 0 arguments are passed. * @param args Expected arguments: [] // none * @param line line number in TEAL file * @param interpreter interpreter object */ constructor(args: string[], line: number, interpreter: Interpreter); execute(stack: TEALStack): void; } export declare class Global extends Op { readonly field: string; readonly interpreter: Interpreter; readonly line: number; /** * Stores global field to query as string * @param args Expected arguments: [field] // Ex: ["GroupSize"] * @param line line number in TEAL file * @param interpreter interpreter object */ constructor(args: string[], line: number, interpreter: Interpreter); execute(stack: TEALStack): void; } export declare class AppOptedIn extends Op { readonly interpreter: Interpreter; readonly line: number; /** * Asserts 0 arguments are passed. * @param args Expected arguments: [] // none * @param line line number in TEAL file * @param interpreter interpreter object */ constructor(args: string[], line: number, interpreter: Interpreter); execute(stack: TEALStack): void; } export declare class AppLocalGet extends Op { readonly interpreter: Interpreter; readonly line: number; /** * Asserts 0 arguments are passed. * @param args Expected arguments: [] // none * @param line line number in TEAL file * @param interpreter interpreter object */ constructor(args: string[], line: number, interpreter: Interpreter); execute(stack: TEALStack): void; } export declare class AppLocalGetEx extends Op { readonly interpreter: Interpreter; readonly line: number; /** * Asserts 0 arguments are passed. * @param args Expected arguments: [] // none * @param line line number in TEAL file * @param interpreter interpreter object */ constructor(args: string[], line: number, interpreter: Interpreter); execute(stack: TEALStack): void; } export declare class AppGlobalGet extends Op { readonly interpreter: Interpreter; readonly line: number; /** * Asserts 0 arguments are passed. * @param args Expected arguments: [] // none * @param line line number in TEAL file * @param interpreter interpreter object */ constructor(args: string[], line: number, interpreter: Interpreter); execute(stack: TEALStack): void; } export declare class AppGlobalGetEx extends Op { readonly interpreter: Interpreter; readonly line: number; /** * Asserts 0 arguments are passed. * @param args Expected arguments: [] // none * @param line line number in TEAL file * @param interpreter interpreter object */ constructor(args: string[], line: number, interpreter: Interpreter); execute(stack: TEALStack): void; } export declare class AppLocalPut extends Op { readonly interpreter: Interpreter; readonly line: number; /** * Asserts 0 arguments are passed. * @param args Expected arguments: [] // none * @param line line number in TEAL file * @param interpreter interpreter object */ constructor(args: string[], line: number, interpreter: Interpreter); execute(stack: TEALStack): void; } export declare class AppGlobalPut extends Op { readonly interpreter: Interpreter; readonly line: number; /** * Asserts 0 arguments are passed. * @param args Expected arguments: [] // none * @param line line number in TEAL file * @param interpreter interpreter object */ constructor(args: string[], line: number, interpreter: Interpreter); execute(stack: TEALStack): void; } export declare class AppLocalDel extends Op { readonly interpreter: Interpreter; readonly line: number; /** * Asserts 0 arguments are passed. * @param args Expected arguments: [] // none * @param line line number in TEAL file * @param interpreter interpreter object */ constructor(args: string[], line: number, interpreter: Interpreter); execute(stack: TEALStack): void; } export declare class AppGlobalDel extends Op { readonly interpreter: Interpreter; readonly line: number; /** * Asserts 0 arguments are passed. * @param args Expected arguments: [] // none * @param line line number in TEAL file * @param interpreter interpreter object */ constructor(args: string[], line: number, interpreter: Interpreter); execute(stack: TEALStack): void; } export declare class Balance extends Op { readonly interpreter: Interpreter; readonly line: number; /** * Asserts if arguments length is zero * @param args Expected arguments: [] // none * @param line line number in TEAL file * @param interpreter Interpreter Object */ constructor(args: string[], line: number, interpreter: Interpreter); execute(stack: TEALStack): void; } export declare class GetAssetHolding extends Op { readonly interpreter: Interpreter; readonly field: string; readonly line: number; /** * Sets field according to arguments passed. * @param args Expected arguments: [Asset Holding field] * // Note: Asset holding field will be string * For ex: `AssetBalance` is correct `0` is not. * @param line line number in TEAL file * @param interpreter Interpreter Object */ constructor(args: string[], line: number, interpreter: Interpreter); execute(stack: TEALStack): void; } export declare class GetAssetDef extends Op { readonly interpreter: Interpreter; readonly field: string; readonly line: number; /** * Sets transaction field according to arguments passed * @param args Expected arguments: [Asset Params field] * // Note: Asset Params field will be string * For ex: `AssetTotal` is correct `0` is not. * @param line line number in TEAL file * @param interpreter Interpreter Object */ constructor(args: string[], line: number, interpreter: Interpreter); execute(stack: TEALStack): void; } /** Pseudo-Ops **/ export declare class Int extends Op { readonly uint64: bigint; readonly line: number; /** * Sets uint64 variable according to arguments passed. * @param args Expected arguments: [number] * @param line line number in TEAL file */ constructor(args: string[], line: number); execute(stack: TEALStack): void; } export declare class Byte extends Op { readonly str: string; readonly encoding: EncodingType; readonly line: number; /** * Sets `str` and `encoding` values according to arguments passed. * @param args Expected arguments: [data string] * @param line line number in TEAL file */ constructor(args: string[], line: number); execute(stack: TEALStack): void; } export declare class Addr extends Op { readonly addr: string; readonly line: number; /** * Sets `addr` value according to arguments passed. * @param args Expected arguments: [Address] * @param line line number in TEAL file */ constructor(args: string[], line: number); execute(stack: TEALStack): void; }