UNPKG

@glitterprotocol/glitter-sdk

Version:

The JavaScript SDK for Glitter

135 lines (134 loc) 4.93 kB
/// <reference types="node" /> import { CreateTxOptions } from '../client'; export interface ExtensionOptions extends CreateTxOptions { waitForConfirmation?: boolean; purgeQueue?: boolean; sequence?: number; accountNumber?: number; isClassic?: boolean; } interface ResponseData { name: string; payload: object; } declare type SendDataType = 'connect' | 'post' | 'sign' | 'info'; interface SendData { [key: string]: any; } interface SignBytesOption { bytes: Buffer; purgeQueue?: boolean; } declare global { interface Window { isGlitterExtensionAvailable: boolean; } } /** * Extension class is for communicating between page and extension */ export declare class Extension { private inpageStream; constructor(identifier?: string); destroy(): void; private generateId; /** * Indicates the Station Extension is installed and availble (requires extension v1.1 or later) */ get isAvailable(): boolean; /** * low level function for sending message to extension. * Do not use this function unless you know what you are doing. */ send(type: SendDataType, data?: SendData): number; /** * Listen to events from the Extension. * You will receive an event after calling connect, sign, or post. * payload structures are described on each function in @return section. * * @param name name of event (optional) * @param callback will be called when `name` or any event emits */ on(name: string, callback: (payload: any) => void): void; on(callback: (payload: any) => void): void; /** * Listen to an event from the Extension once. * You will receive an event after calling each type of messages. * payload structures are described on each function in @return section. * * @param name name of event (optional) * @param callback will be called when `name` or any event emits */ once(name: string, callback: (payload: any) => void): void; once(callback: (payload: any) => void): void; /** * Send a request * * @param {SendDataType} type * @param {SendData} data */ request(type: SendDataType, data?: SendData): Promise<ResponseData>; /** * Request to Station Extension for connecting a wallet * * @return {string} name 'onConnect' * @return {AccAddress} payload Glitter account address */ connect(): number; /** * Request for Station Extension information * * @return {object} payload.network * @return {string} payload.network.name Name of the network * @return {string} payload.network.chainId Chain ID * @return {string} payload.network.lcd LCD address * @return {string} payload.network.fcd FCD address * @return {string} payload.network.ws Websocket address */ info(): number; /** * Request for signing tx * * @return {string} name 'onSign' * @return {object} payload * @return {number} payload.id identifier * @return {string} payload.origin origin address * @return {Msg[]} payload.msgs requested msgs * @return {boolean} payload.success * @return {string} payload.result.public_key Base64 encoded public key * @return {string} payload.result.signature Base64 encoded signature * @return {number} payload.result.recid Recovery id * @return {StdSignMsg.Data} payload.result.stdSignMsgData */ sign(options: ExtensionOptions): number; /** * Request for signing bytes * * @return {string} name 'onSign' * @return {object} payload * @return {number} payload.id identifier * @return {string} payload.origin origin address * @return {Msg[]} payload.msgs requested msgs * @return {boolean} payload.success * @return {string} payload.result.public_key Base64 encoded public key * @return {string} payload.result.signature Base64 encoded signature * @return {number} payload.result.recid Recovery id */ signBytes(options: SignBytesOption): number; /** * Request for sign and post to LCD server * * @return {string} name 'onPost' * @return {object} payload * @return {number} payload.id identifier * @return {string} payload.origin origin address * @return {Msg[]} payload.msgs requested msgs * @return {boolean} payload.success * @return {number|undefined} payload.result.code * error code. undefined with successful tx * @return {string} payload.result.raw_log raw log * @return {string} payload.result.txhash transaction hash */ post(options: ExtensionOptions): number; } export {};