@massalabs/massa-web3
Version:
massa's web3 sdk client
107 lines (106 loc) • 3.16 kB
TypeScript
import { Address } from '../basicElements';
import { Mas } from '../basicElements/mas';
import { U64_t } from '../basicElements/serializers/number/u64';
/**
* Operation status.
*
* @remarks
* This enumeration captures the lifecycle stages of a blockchain operation, from initiation to finalization.
*
* @privateRemarks
* Keeps the order of the stages in the lifecycle as it is used by the wait method.
*/
export declare enum OperationStatus {
/**
* The operation has not been found within the blockchain, either because it is not yet processed or does not exist.
*/
NotFound = 0,
/**
* The operation has been recognized and is awaiting inclusion in the blockchain ledger.
*/
PendingInclusion = 1,
/**
* The operation has executed successfully; however, the block containing it has not yet been confirmed as final.
*/
SpeculativeSuccess = 2,
/**
* The operation has failed; however, the block containing the failure has not yet been confirmed as final.
*/
SpeculativeError = 3,
/**
* The operation has executed successfully and the block containing it has been confirmed as final.
*/
Success = 4,
/**
* The operation has failed and the block containing the failure has been confirmed as final.
*/
Error = 5
}
/**
* Operation types.
*
* @remarks
* The corresponding values are fixed by the node.
*/
export declare enum OperationType {
Transaction = 0,
RollBuy = 1,
RollSell = 2,
ExecuteSmartContractBytecode = 3,
CallSmartContractFunction = 4
}
/**
* Operation options.
*
* @remarks
* Period to live is the number of periods the operation is valid for.
* This value must be positive and if it's too big, the node will (silently?) reject the operation.
*
* If no fee is provided, minimal fee of connected node is used.
* If no periodToLive is provided, the DefaultPeriodToLive is used.
*/
export type OperationOptions = {
fee?: U64_t;
periodToLive?: number;
};
export type BaseOperation = {
fee: U64_t;
expirePeriod: number;
type: OperationType;
};
export type RollOperation = BaseOperation & {
type: OperationType.RollBuy | OperationType.RollSell;
amount: U64_t;
};
export type TransferOperation = BaseOperation & {
type: OperationType.Transaction;
amount: U64_t;
recipientAddress: Address;
};
export type BaseSmartContractOperation = BaseOperation & {
maxGas: U64_t;
coins: U64_t;
};
export type CallOperation = BaseSmartContractOperation & {
type: OperationType.CallSmartContractFunction;
address: string;
func: string;
parameter: Uint8Array;
};
export type ReadOnlyParams = {
parameter: Uint8Array;
coins?: Mas;
fee?: Mas;
maxGas?: U64_t;
func: string;
target: string;
caller: string;
};
export type ExecuteOperation = BaseOperation & {
maxGas: U64_t;
maxCoins: U64_t;
type: OperationType.ExecuteSmartContractBytecode;
contractDataBinary: Uint8Array;
datastore?: Map<Uint8Array, Uint8Array>;
};
export type OperationDetails = RollOperation | TransferOperation | CallOperation | ExecuteOperation;