@gear-js/api
Version:
A JavaScript library that provides functionality to connect GEAR Component APIs.
196 lines (195 loc) • 8.03 kB
TypeScript
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>;
}