UNPKG

@gear-js/api

Version:

A JavaScript library that provides functionality to connect GEAR Component APIs.

196 lines (195 loc) 8.03 kB
import { SubmittableExtrinsic } from '@polkadot/api/types'; import { HexString } from '@polkadot/util/types'; import { ISubmittableResult } from '@polkadot/types/types'; import { ICalculateReplyForHandleOptions, MessageSendOptions, MessageSendReplyOptions, ReplyInfo } from '../types'; import { UserMessageSent, UserMessageSentData } from '../events'; import { GearTransaction } from './Transaction'; import { ProgramMetadata } from '../metadata'; export declare class GearMessage extends GearTransaction { /** * ## Send Message * @param args Message parameters. * @param meta Program metadata obtained using `getProgramMetadata` function. * @param typeIndex (optional) Index of type in the registry. If not specified the type index from `meta.handle.input` will be used instead. * @returns Submitable result * * _Note that parameter `prepaid` is not supported starting from `1010` runtime version._ * @example * ```javascript * const programId = '0x..'; * const hexMeta = '0x...'; * const meta = ProgramMetadata.from(hexMeta); * * const tx = api.message.send({ * destination: programId, * payload: { amazingPayload: { } }, * gasLimit: 20_000_000 * }, meta, meta.handle.input) * * tx.signAndSend(account, (events) => { * events.forEach(({event}) => console.log(event.toHuman())) * }) * ``` */ send(args: MessageSendOptions, meta: ProgramMetadata, typeIndex?: number): SubmittableExtrinsic<'promise', ISubmittableResult>; /** * ## Send Message * @param args Message parameters * @param hexRegistry Registry in hex format * @param typeIndex Index of type in the registry. * @returns Submitable result * * _Note that parameter `prepaid` is not supported starting from `1010` runtime version._ * @example * ```javascript * const programId = '0x..'; * const hexRegistry = '0x...'; * * const tx = api.message.send({ * destination: programId, * payload: { amazingPayload: { ... } }, * gasLimit: 20_000_000 * }, hexRegistry, 4) * * tx.signAndSend(account, (events) => { * events.forEach(({event}) => console.log(event.toHuman())) * }) * ``` */ send(args: MessageSendOptions, hexRegistry: HexString, typeIndex: number): SubmittableExtrinsic<'promise', ISubmittableResult>; /** * ## Send Message * @param args Message parameters * @param metaOrHexRegistry (optional) Registry in hex format or ProgramMetadata * @param typeName payload type (one of the default rust types if metadata or registry don't specified) * @returns Submitable result * * _Note that parameter `prepaid` is not supported starting from `1010` runtime version._ * @example * ```javascript * const programId = '0x..'; * * const tx = api.message.send({ * destination: programId, * payload: 'PING', * gasLimit: 20_000_000 * }, undefined, 'String') * * tx.signAndSend(account, (events) => { * events.forEach(({event}) => console.log(event.toHuman())) * }) * ``` */ send(args: MessageSendOptions, metaOrHexRegistry?: ProgramMetadata | HexString, typeName?: string): SubmittableExtrinsic<'promise', ISubmittableResult>; /** * ## Send reply message * @param args Message parameters * @param meta Program metadata obtained using `ProgramMetadata.from` method. * @param typeIndex (optional) Index of type in the registry. If not specified the type index from `meta.reply.input` will be used instead. * @returns Submitable result * * _Note that parameter `prepaid` is not supported starting from `1010` runtime version._ * @example * ```javascript * const replyToMessage = '0x..'; * const hexMeta = '0x...'; * const meta = ProgramMetadata.from(hexMeta); * * const tx = api.message.send({ * replyToId: replyToMessage, * payload: { amazingPayload: { } }, * gasLimit: 20_000_000 * }, meta, meta.reply.input) * * tx.signAndSend(account, (events) => { * events.forEach(({event}) => console.log(event.toHuman())) * }) * ``` */ sendReply(args: MessageSendReplyOptions, meta?: ProgramMetadata, typeIndex?: number): Promise<SubmittableExtrinsic<'promise', ISubmittableResult>>; /** * ## Send reply message * @param args Message parameters * @param hexRegistry Registry in hex format * @param typeIndex Index of type in the registry. * @returns Submitable result * * _Note that parameter `prepaid` is not supported starting from `1010` runtime version._ * @example * ```javascript * const replyToMessage = '0x..'; * const hexRegistry = '0x...'; * * const tx = api.message.send({ * replyToId: replyToMessage, * payload: { amazingPayload: { } }, * gasLimit: 20_000_000 * }, hexRegistry, 5) * * tx.signAndSend(account, (events) => { * events.forEach(({event}) => console.log(event.toHuman())) * }) * ``` */ sendReply(args: MessageSendReplyOptions, hexRegistry: HexString, typeIndex: number): Promise<SubmittableExtrinsic<'promise', ISubmittableResult>>; /** * ## Send reply message * @param args Message parameters * @param metaOrHexRegistry (optional) Registry in hex format or ProgramMetadata * @param typeName payload type (one of the default rust types if metadata or registry don't specified) * @returns Submitable extrinsic * * _Note that parameter `prepaid` is not supported starting from `1010` runtime version._ * @example * ```javascript * const replyToMessage = '0x..'; * const hexRegistry = '0x...'; * * const tx = api.message.send({ * replyToId: replyToMessage, * payload: { amazingPayload: { } }, * gasLimit: 20_000_000 * }, hexRegistry, 5) * * tx.signAndSend(account, (events) => { * events.forEach(({event}) => console.log(event.toHuman())) * }) * ``` */ sendReply(args: MessageSendReplyOptions, metaOrHexRegistry?: ProgramMetadata | HexString, typeName?: string): Promise<SubmittableExtrinsic<'promise', ISubmittableResult>>; /** * ## Get event with reply message * @param msgId - id of sent message * @param txBlock - number or hash of block where the message was sent * @returns UserMessageSent event */ getReplyEvent(programId: HexString, msgId: HexString | null, txBlock: HexString | number): Promise<UserMessageSent>; /** * @deprecated Use `getReplyEvent` instead */ listenToReplies(programId: HexString, bufferSize?: number): (messageId: HexString) => Promise<UserMessageSentData>; /** * ## Send message to the program and get the reply. * This method is immutable and doesn't send any extrinsic. * @param params Message parameters * @param meta (optional) Program metadata obtained using `ProgramMetadata.from` method. * @param typeIndexOrTypeName (optional) Index of type in the registry. If not specified the type index from `meta.handle.input` will be used instead. * @returns Reply info structure * * @example * ```javascript * const programId = '0x..'; * const origin = '0x...'; * const meta = ProgramMetadata.from('0x...'); * const result = await api.message.calculateReply({ * origin, * destination: programId, * payload: { myPayload: [] }, * value: 0 * }, meta); * * console.log(result.toJSON()); * console.log('reply payload:', meta.createType(meta.types.handle.output, result.payload).toJSON()); */ calculateReply({ payload, origin, destination, value, gasLimit, at }: ICalculateReplyForHandleOptions, meta?: ProgramMetadata, typeIndexOrTypeName?: number | string): Promise<ReplyInfo>; }