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) ) } } |