@glitterprotocol/glitter-sdk
Version:
The JavaScript SDK for Glitter
135 lines (134 loc) • 4.93 kB
TypeScript
/// <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 {};