import debug from "debug"; const dbg = debug("upend:wasm"); export abstract class UpEndWasmExtensions { private initialized = false; private initPromise: Promise | undefined = undefined; protected abstract _init(): Promise; public async init(): Promise { 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; }