Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 | 1x 1x 2x | import {Checksum256Type, PermissionLevelType} from '@wharfkit/antelope'
import type {Cancelable, LocaleDefinitions} from '@wharfkit/common'
import {LoginOptions} from './kit'
import {LoginContext} from './login'
/**
* The arguments for a [[UserInterface.prompt]] call.
*/
export interface PromptArgs {
title: string
body?: string
elements: PromptElement[]
}
/**
* The different types of elements that can be used in a [[PromptArgs]].
*/
export interface PromptElement {
type: 'accept' | 'asset' | 'button' | 'close' | 'countdown' | 'link' | 'qr' | 'textarea'
label?: string
data?: unknown
}
/**
* The response for a [[UserInterface.prompt]] call.
*/
export interface PromptResponse {}
/**
* The response for a login call of a [[UserInterface]].
*/
export interface UserInterfaceLoginResponse {
chainId?: Checksum256Type
permissionLevel?: PermissionLevelType
walletPluginIndex: number
}
/**
* The options to pass to [[UserInterface.translate]].
*/
export interface UserInterfaceTranslateOptions {
default: string
[key: string]: unknown
}
/**
* The translate function the UserInterface expects and uses.
*/
export type UserInterfaceTranslateFunction = (
key: string,
options?: UserInterfaceTranslateOptions,
namespace?: string
) => string
/**
* Interface which all 3rd party user interface plugins must implement.
*/
export interface UserInterface {
/** Interact with the user to collect the data needed for a [[UserInterfaceLoginResponse]]. */
login(context: LoginContext): Promise<UserInterfaceLoginResponse>
/** Inform the UI that an error has occurred */
onError: (error: Error) => Promise<void>
/** Inform the UI that a login call has started **/
onLogin: () => Promise<void>
/** Inform the UI that a login call has completed **/
onLoginComplete: () => Promise<void>
/** Inform the UI that a transact call has started **/
onTransact: () => Promise<void>
/** Inform the UI that a transact call has completed **/
onTransactComplete: () => Promise<void>
/** Inform the UI that a transact call has started signing the transaction **/
onSign: () => Promise<void>
/** Inform the UI that a transact call has completed signing the transaction **/
onSignComplete: () => Promise<void>
/** Inform the UI that a transact call has started broadcasting the transaction **/
onBroadcast: () => Promise<void>
/** Inform the UI that a transact call has completed broadcasting the transaction **/
onBroadcastComplete: () => Promise<void>
/** Prompt the user with a custom UI element **/
prompt: (args: PromptArgs) => Cancelable<PromptResponse>
/** Update the displayed modal status from a TransactPlugin **/
status: (message: string) => void
/** Translate a string using the UI's language **/
translate: UserInterfaceTranslateFunction
/** Returns a translator for a specific namespace */
getTranslate: (namespace?: string) => UserInterfaceTranslateFunction
/** Programmatically add new localization strings to the user interface */
addTranslations: (translations: LocaleDefinitions) => void
}
/**
* Abstract class which all 3rd party [[UserInterface]] implementations may extend.
*/
export abstract class AbstractUserInterface implements UserInterface {
abstract login(context: LoginContext): Promise<UserInterfaceLoginResponse>
abstract onError(error: Error): Promise<void>
abstract onLogin(options?: LoginOptions): Promise<void>
abstract onLoginComplete(): Promise<void>
abstract onTransact(): Promise<void>
abstract onTransactComplete(): Promise<void>
abstract onSign(): Promise<void>
abstract onSignComplete(): Promise<void>
abstract onBroadcast(): Promise<void>
abstract onBroadcastComplete(): Promise<void>
abstract prompt(args: PromptArgs): Cancelable<PromptResponse>
abstract status(message: string): void
translate(key: string, options?: UserInterfaceTranslateOptions, namespace?: string): string {
throw new Error(
'The `translate` method must be implemented in this UserInterface. Called with: ' +
JSON.stringify({
key,
options,
namespace,
})
)
}
getTranslate(namespace?: string | undefined): UserInterfaceTranslateFunction {
return (key, options) => this.translate(key, options, namespace)
}
addTranslations(translations: LocaleDefinitions) {
throw new Error(
'The `addTranslations` method must be implemented in this UserInterface. Called with: ' +
JSON.stringify(translations)
)
}
}
|