UNPKG

xumm

Version:

One Xumm SDK to rule them all (browser, backend, xApp)

140 lines (139 loc) 4.55 kB
/// <reference types="node" /> import type { XummSdk, XummSdkJwt, xAppOttData, Payload, JwtUserdata, Storage, Push } from "xumm-sdk"; import type { XummPkceEvent, ResolvedFlow, XummProfile } from "xumm-oauth2-pkce"; import type { xApp, xAppEvent } from "xumm-xapp-sdk"; import { EventEmitter } from "events"; export interface UniversalSdkEvent { logout: () => void; ready: () => void; retrieving: () => void; } /** * Development? * npm run watch (tsc in watch mode) * npm run browserify-watch (watch, browserify tsc output) * npm run serve (webserver, :3001) * npm run dev (watch, nodemon dist/samples/index.js) * ngrok start dev (local :3001 to https:// dev URL) * > https://.../sample/ */ declare enum Runtimes { cli = "cli", browser = "browser", xapp = "xapp" } type Runtime = Record<Runtimes, boolean>; export declare interface Xumm { on<U extends keyof UniversalSdkEvent>(event: U, listener: UniversalSdkEvent[U]): this; on<U extends keyof xAppEvent>(event: U, listener: xAppEvent[U]): this; on<U extends keyof XummPkceEvent>(event: U, listener: XummPkceEvent[U]): this; off<U extends keyof UniversalSdkEvent>(event: U, listener: UniversalSdkEvent[U]): this; off<U extends keyof xAppEvent>(event: U, listener: xAppEvent[U]): this; off<U extends keyof XummPkceEvent>(event: U, listener: XummPkceEvent[U]): this; } /** * The Promisified type takes an entire class and expects all methods * to return a Promise of their method's native return values */ type Promisified<T> = { [K in keyof T]: T[K] extends (...args: infer A) => infer R ? (...args: A) => Promise<R> : T[K]; }; interface Environment { ott?: Promise<xAppOttData | undefined>; jwt?: Promise<{ client_id: string; scope?: string; state?: string; aud: string; sub: string; email?: string; app_uuidv4: string; app_name: string; payload_uuidv4?: string; usertoken_uuidv4?: string; network_type?: string; network_endpoint?: string; network_id?: number; iat: number; exp: number; iss: string; usr?: string; net?: string; [key: string]: any; } | undefined>; openid?: Promise<{ sub: string; email: string; picture: string; account: string; name: string; domain?: string; blocked: boolean; source?: string; kycApproved: boolean; proSubscription: boolean; networkType: string; networkEndpoint: string; networkId?: number; profile?: XummProfile; [key: string]: any; } | undefined>; bearer?: Promise<string>; retrieving: Promise<void>; ready: Promise<void>; success: Promise<void>; retrieved: Promise<void>; } declare class UnifiedUserData { account: Promise<string | undefined>; picture: Promise<string | undefined>; name: Promise<string | undefined>; domain: Promise<string | undefined>; source: Promise<string | undefined>; networkType: Promise<string | undefined>; networkEndpoint: Promise<string | undefined>; networkId: Promise<number | undefined>; blocked: Promise<boolean | undefined>; kycApproved: Promise<boolean | undefined>; proSubscription: Promise<boolean | undefined>; profile: Promise<XummProfile | undefined>; token: Promise<string | null>; } /** * This is where the magic happens */ export declare class Xumm extends EventEmitter { private instance; private jwtCredential; runtime: Runtime; state: { account: string; signedIn: boolean; }; user: UnifiedUserData; environment: Environment; payload?: Promisified<Payload>; xapp?: xApp; userstore?: Promisified<JwtUserdata>; backendstore?: Promisified<Storage>; helpers?: Promisified<Pick<XummSdkJwt, "ping" | "getCuratedAssets" | "getKycStatus" | "getTransaction" | "verifyUserTokens" | "getRates" | "getNftokenDetail">>; push?: Promisified<Push>; private apiKeyOrJwt; private apiSecretOrOtt?; constructor(apiKeyOrJwt: string, apiSecretOrOtt?: string); private initialize; /** * PKCE */ authorize(): Promise<ResolvedFlow | undefined | Error>; /** * TODO: CHECK IF EVENTS ARE NOT REGISTERED AND FIRING TWICE */ private handlePkceEvents; logout(): Promise<void>; /** * SDK */ ping(): Promise<ReturnType<XummSdk["ping"]> | undefined>; } export {};