lisk-framework
Version:
Lisk blockchain application platform
31 lines (30 loc) • 1.58 kB
TypeScript
/// <reference types="node" />
import { MethodContext, ImmutableMethodContext } from '../../state_machine/types';
import { JSONObject } from '../../types';
import { CCMsg } from '../interoperability';
export type FeeTokenID = Buffer;
export interface ModuleConfig {
feeTokenID: Buffer;
minFeePerByte: number;
maxBlockHeightZeroFeePerByte: number;
feePoolAddress?: Buffer;
}
export type ModuleConfigJSON = JSONObject<ModuleConfig>;
export interface TokenMethod {
transfer(methodContext: MethodContext, senderAddress: Buffer, generatorAddress: Buffer, id: Buffer, amount: bigint): Promise<void>;
burn(methodContext: MethodContext, senderAddress: Buffer, id: FeeTokenID, amount: bigint): Promise<void>;
getAvailableBalance(methodContext: ImmutableMethodContext, address: Buffer, tokenID: Buffer): Promise<bigint>;
lock(methodContext: MethodContext, address: Buffer, module: string, tokenID: Buffer, amount: bigint): Promise<void>;
unlock(methodContext: MethodContext, address: Buffer, module: string, tokenID: Buffer, amount: bigint): Promise<void>;
userSubstoreExists(methodContext: ImmutableMethodContext, address: Buffer, tokenID: Buffer): Promise<boolean>;
}
export interface GetFeeTokenIDResponse {
tokenID: string;
}
export interface GetMinFeePerByteResponse {
minFeePerByte: number;
}
export interface InteroperabilityMethod {
getMessageFeeTokenID(methodContext: ImmutableMethodContext, chainID: Buffer): Promise<Buffer>;
getMessageFeeTokenIDFromCCM(methodContext: ImmutableMethodContext, ccm: CCMsg): Promise<Buffer>;
}