import { U8, U16, U32, U64, U128, U256, I8, I16, I32, I64, I128, I256 } from './serializers'; /** * Interface for serializable objects * * @see serialize - serialize object to Uint8Array * @see deserialize - deserialize Uint8Array to object */ export type Serializable = { serialize(): Uint8Array; deserialize(data: Uint8Array, offset: number): DeserializedResult; }; /** * Interface for deserialized result * * @see instance - deserialized instance * @see offset - offset of the deserialized instance */ export type DeserializedResult = { instance: T; offset: number; }; /** * Typed Arguments facilitating the differentiation * between different argument types due to Javascript's * single number type. * * @remarks In AssemblyScript the latter are all native types */ export declare enum ArgTypes { STRING = 0, BOOL = 1, U8 = 2, U16 = 3, U32 = 4, U64 = 5, U128 = 6, U256 = 7, I8 = 8, I16 = 9, I32 = 10, I64 = 11, I128 = 12, I256 = 13, F32 = 14, F64 = 15, ARRAY = 16, UINT8ARRAY = 17, SERIALIZABLE = 18, SERIALIZABLE_OBJECT_ARRAY = 19 } export declare enum ArrayTypes { STRING = 0, BOOL = 1, U8 = 2, U16 = 3, U32 = 4, U64 = 5, U128 = 6, U256 = 7, I8 = 8, I16 = 9, I32 = 10, I64 = 11, I128 = 12, I256 = 13, F32 = 14, F64 = 15 } export type IParam = { type: ArgTypes; value: any; }; /** * Native types in AssemblyScript * * @remarks * These are the types that can be used in AssemblyScript */ export type NativeType = string | boolean | number | bigint; export declare const DEFAULT_OFFSET = 0; /** * Storage and serialization class for remote function call arguments. * * @remarks * This class can serialize typescript native types into bytes, in order to * make smart-contract function call easier. * It also can deserialize bytes. * */ export declare class Args { serialized: Uint8Array; offset: number; private argsList; /** * Constructor to either serialize or deserialize data passed from/to DApps and remote Smart contracts. * * @param serialized - The optional serialized arguments to deserialize. * @param offset - The optional offset to start deserializing from. */ constructor(serialized?: Uint8Array, offset?: number); getArgsList(): IParam[]; /** * Returns the current deserialization offset of the serialized byte array. * * @returns the current offset */ getOffset(): number; /** * Returns the serialized byte array. * * @returns A byte array. */ serialize(): Uint8Array; /** * Returns the next string in the serialized byte array. * * @remarks * Increments to offset to point the data after the one that as been deserialized in the byte array. * * @returns the deserialized string */ nextString(): string; private nextInteger; /** * Returns the next unsigned byte in the serialized byte array. * * @remarks * Increments to offset to point the data after the one that as been deserialized in the byte array. * * @returns the deserialized number. */ nextU8(): U8.U8_t; /** * Returns the next unsigned short integer in the serialized byte array. * * @remarks * Increments to offset to point the data after the one that as been deserialized in the byte array. * * @returns the deserialized number. */ nextU16(): U16.U16_t; /** * Returns the next unsigned integer in the serialized byte array. * * @remarks * Increments to offset to point the data after the one that as been deserialized in the byte array. * * @returns the deserialized number */ nextU32(): U32.U32_t; /** * Returns the next long integer in the serialized byte array. * * @remarks * Increments to offset to point the data after the one that as been deserialized in the byte array. * * @returns the deserialized number. */ nextU64(): U64.U64_t; /** * Returns the next uint128 in the serialized byte array. * * @remarks * Increments to offset to point the data after the one that as been deserialized in the byte array. * * @returns the deserialized number. */ nextU128(): U128.U128_t; /** * Returns the next uint256 in the serialized byte array. * * @remarks * Increments to offset to point the data after the one that as been deserialized in the byte array. * * @returns the deserialized number. */ nextU256(): U256.U256_t; /** * Returns the next signed byte in the serialized byte array. * * @remarks * Increments to offset to point the data after the one that as been deserialized in the byte array. * * @returns the deserialized number. */ nextI8(): I8.I8_t; /** * Returns the next signed short integer in the serialized byte array. * * @remarks * Increments to offset to point the data after the one that as been deserialized in the byte array. * * @returns the deserialized number. */ nextI16(): I16.I16_t; /** * Returns the next signed integer in the serialized byte array. * * @remarks * Increments to offset to point the data after the one that as been deserialized in the byte array. * * @returns the deserialized number. */ nextI32(): I32.I32_t; /** * Returns the next signed long integer in the serialized byte array. * * @remarks * Increments to offset to point the data after the one that as been deserialized in the byte array. * * @returns the deserialized number. */ nextI64(): I64.I64_t; /** * Returns the next signed long integer in the serialized byte array. * * @remarks * Increments to offset to point the data after the one that as been deserialized in the byte array. * * @returns the deserialized number. */ nextI128(): I128.I128_t; /** * Returns the next signed long integer in the serialized byte array. * * @remarks * Increments to offset to point the data after the one that as been deserialized in the byte array. * * @returns the deserialized number. */ nextI256(): I256.I256_t; /** * Returns the next boolean in the serialized byte array. * * @remarks * Increments to offset to point the data after the one that as been deserialized in the byte array. * * @returns the deserialized boolean. */ nextBool(): boolean; /** * Returns the next floating number in the serialized byte array. * * @remarks * Increments to offset to point the data after the one that as been deserialized in the byte array. * * @returns the deserialized number. */ nextF32(): number; /** * Returns the next long floating number in the serialized byte array. * * @remarks * Increments to offset to point the data after the one that as been deserialized in the byte array. * * @returns the deserialized number. */ nextF64(): number; /** * Returns the next sub byte array in the serialized byte array. * * @remarks * Increments to offset to point the data after the one that as been deserialized in the byte array. * * @returns the deserialized byte array. */ nextUint8Array(): Uint8Array; /** * Returns the next {@link Serializable} object in the serialized byte array * * @remarks * Increments to offset to point the data after the one that as been deserialized in the byte array. * * @param ctor - the class constructor prototype T.prototype * * @returns the deserialized object T */ nextSerializable>(ctor: new () => T): T; /** * Returns the next array of {@link Serializable} objects in the serialized byte array * * @remarks * Increments to offset to point the data after the one that as been deserialized in the byte array. * * @param ctor - the class constructor prototype T.prototype * * @returns the deserialized array of object that implement Serializable */ nextSerializableObjectArray>(ctor: new () => T): T[]; /** * Returns the next array of {@link ArgTypes} objects in the serialized byte array * * @remarks * Increments to offset to point the data after the one that as been deserialized in the byte array. * * @param type - the type of the elements in the array. * * @returns the next array of object that are native type */ nextArray(type: ArrayTypes): T[]; /** * Adds a unsigned byte to the serialized arguments. * * @param value - the number to add. * * @returns the serialized arguments to be able to chain `add` method calls. */ addU8(value: U8.U8_t): this; addU16(value: U16.U16_t): this; /** * Adds an unsigned integer to the serialized arguments. * * @param value - the number to add. * * @returns the serialized arguments to be able to chain `add` method calls. */ addU32(value: U32.U32_t): this; /** * Adds an unsigned long integer to the serialized arguments. * * @param value - the number to add. * * @returns the serialized arguments to be able to chain `add` method calls. */ addU64(value: U64.U64_t): this; /** * Adds an unsigned long integer to the serialized arguments. * * @param value - the number to add. * * @returns the serialized arguments to be able to chain `add` method calls. */ addU128(bigInt: U128.U128_t): this; /** * Adds an unsigned long integer to the serialized arguments. * * @param value - the number to add. * * @returns the serialized arguments to be able to chain `add` method calls. */ addU256(bigInt: U256.U256_t): this; /** * Adds a signed byte to the serialized arguments. * * @param value - the number to add. * * @returns the serialized arguments to be able to chain `add` method calls. */ addI8(value: I8.I8_t): this; /** * Adds a signed short integer to the serialized arguments. * * @param value - the number to add. * * @returns the serialized arguments to be able to chain `add` method calls. */ addI16(value: I16.I16_t): this; /** * Adds a signed integer to the serialized arguments. * * @param value - the number to add. * * @returns the serialized arguments to be able to chain `add` method calls. */ addI32(value: I32.I32_t): this; /** * Adds a signed long integer to the serialized arguments. * * @param value - the number to add. * * @returns the serialized arguments to be able to chain `add` method calls. */ addI64(value: I64.I64_t): this; /** * Adds a signed long integer to the serialized arguments. * * @param value - the number to add. * * @returns the serialized arguments to be able to chain `add` method calls. */ addI128(value: I128.I128_t): this; /** * Adds a signed long integer to the serialized arguments. * * @param value - the number to add. * * @returns the serialized arguments to be able to chain `add` method calls. */ addI256(value: I256.I256_t): this; /** * Adds a boolean to the serialized arguments. * * @param value - the boolean to add. * * @returns the serialized arguments to be able to chain `add` method calls. */ addBool(value: boolean): this; /** * Adds a floating number to the serialized arguments. * * @param value - the number to add. * * @returns the serialized arguments to be able to chain `add` method calls. */ addF32(value: number): this; /** * Adds a long floating number to the serialized arguments. * * @param value - the number to add. * * @returns the serialized arguments to be able to chain `add` method calls. */ addF64(value: number): this; /** * Adds a byte array integer to the serialized arguments. * * @param array - the array to add. * * @returns the serialized arguments to be able to chain `add` method calls. */ addUint8Array(array: Uint8Array): this; /** * Adds a string to the serialized arguments. * * @remarks * Works only if the argument is an instance of a handled type (String of 4294967295 characters maximum) * * @param value - the number to add. * * @returns the serialized arguments to be able to chain `add` method calls. */ addString(value: string): this; /** * Adds a serializable object to the serialized arguments. * * @remarks * The object must implement the {@link Serializable} interface * * @see {@link Serializable} * * @param value - the object to add * * @returns the serialized arguments to be able to chain `add` method calls. */ addSerializable(value: Serializable): this; /** * Adds an array of serializable objects to the serialized arguments. * * @remarks * Each object must implement the {@link Serializable} interface. * This will perform a deep copy of your objects thanks to the {@link Serializable.serialize} * method you define in your class. * * @see {@link Serializable} * * @param arg - the argument to add * * @returns the serialized arguments to be able to chain `add` method calls. */ addSerializableObjectArray>(arg: T[]): this; /** * Adds an array of objects to the serialized arguments. * * @remarks * If the type of the values of the array is not native type, this will serialize the pointers, which is certainly * not what you want! You can only serialize properly array of native types or array of `Serializable` object. * * @see {@link addSerializableObjectArray} * * @param arg - the argument to add * * @returns the serialized arguments to be able to chain `add` method calls. */ addArray(arg: NativeType[], type: ArrayTypes): this; /** * Internal function to concat to Uint8Array. * * @param a - first array to concat * @param b - second array to concat * * @returns the concatenated array */ static concatArrays(a: Uint8Array, b: Uint8Array): Uint8Array; /** * Returns the data of requested size for current offset * * @param size - The data size * @returns the slice of the serialized internal buffer */ private getNextData; }