/// 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; export interface TokenMethod { transfer(methodContext: MethodContext, senderAddress: Buffer, generatorAddress: Buffer, id: Buffer, amount: bigint): Promise; burn(methodContext: MethodContext, senderAddress: Buffer, id: FeeTokenID, amount: bigint): Promise; getAvailableBalance(methodContext: ImmutableMethodContext, address: Buffer, tokenID: Buffer): Promise; lock(methodContext: MethodContext, address: Buffer, module: string, tokenID: Buffer, amount: bigint): Promise; unlock(methodContext: MethodContext, address: Buffer, module: string, tokenID: Buffer, amount: bigint): Promise; userSubstoreExists(methodContext: ImmutableMethodContext, address: Buffer, tokenID: Buffer): Promise; } export interface GetFeeTokenIDResponse { tokenID: string; } export interface GetMinFeePerByteResponse { minFeePerByte: number; } export interface InteroperabilityMethod { getMessageFeeTokenID(methodContext: ImmutableMethodContext, chainID: Buffer): Promise; getMessageFeeTokenIDFromCCM(methodContext: ImmutableMethodContext, ccm: CCMsg): Promise; }