35 lines
899 B
TypeScript
35 lines
899 B
TypeScript
|
import debug from "debug";
|
||
|
const dbg = debug("upend:wasm");
|
||
|
|
||
|
export abstract class UpEndWasmExtensions {
|
||
|
private initialized = false;
|
||
|
private initPromise: Promise<void> | undefined = undefined;
|
||
|
protected abstract _init(): Promise<void>;
|
||
|
public async init(): Promise<void> {
|
||
|
if (!this.initialized) {
|
||
|
if (!this.initPromise) {
|
||
|
this.initPromise = this._init();
|
||
|
}
|
||
|
await this.initPromise;
|
||
|
this.initialized = true;
|
||
|
dbg("WASM extensions initialized.");
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public abstract addr_to_components(address: string): AddressComponents;
|
||
|
public abstract components_to_addr(components: AddressComponents): string;
|
||
|
public abstract AddressTypeConstants: AddressTypeConstants;
|
||
|
}
|
||
|
|
||
|
export interface AddressTypeConstants {
|
||
|
Attribute: string;
|
||
|
Hash: string;
|
||
|
Url: string;
|
||
|
Uuid: string;
|
||
|
}
|
||
|
|
||
|
export interface AddressComponents {
|
||
|
t: string;
|
||
|
c?: string;
|
||
|
}
|