@ultraos/wallet-sdk 0.3.1 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +47 -0
- package/README.md +19 -8
- package/dist/index.mjs +559 -0
- package/dist/index.mjs.map +7 -0
- package/package.json +18 -3
- package/src/lib/interfaces/connect-params.interface.d.ts +12 -0
- package/src/lib/interfaces/connect-params.interface.d.ts.map +1 -1
- package/src/lib/interfaces/connect-params.interface.js.map +1 -1
- package/src/lib/interfaces/index.d.ts +0 -1
- package/src/lib/interfaces/index.d.ts.map +1 -1
- package/src/lib/interfaces/index.js +0 -1
- package/src/lib/interfaces/index.js.map +1 -1
- package/src/lib/interfaces/wallet-provider-response.interface.d.ts +84 -27
- package/src/lib/interfaces/wallet-provider-response.interface.d.ts.map +1 -1
- package/src/lib/interfaces/wallet-provider-response.interface.js.map +1 -1
- package/src/lib/interfaces/wallet-provider.interface.d.ts +1 -17
- package/src/lib/interfaces/wallet-provider.interface.d.ts.map +1 -1
- package/src/lib/interfaces/wallet-provider.interface.js.map +1 -1
- package/src/lib/providers/extension-provider/extension.provider.d.ts +1 -7
- package/src/lib/providers/extension-provider/extension.provider.d.ts.map +1 -1
- package/src/lib/providers/extension-provider/extension.provider.js +0 -6
- package/src/lib/providers/extension-provider/extension.provider.js.map +1 -1
- package/src/lib/providers/web-provider/web.provider.d.ts +1 -7
- package/src/lib/providers/web-provider/web.provider.d.ts.map +1 -1
- package/src/lib/providers/web-provider/web.provider.js +0 -10
- package/src/lib/providers/web-provider/web.provider.js.map +1 -1
- package/src/lib/ultra-wallet-sdk.d.ts +1 -7
- package/src/lib/ultra-wallet-sdk.d.ts.map +1 -1
- package/src/lib/ultra-wallet-sdk.js +0 -6
- package/src/lib/ultra-wallet-sdk.js.map +1 -1
- package/src/lib/interfaces/purchase-item.interface.d.ts +0 -8
- package/src/lib/interfaces/purchase-item.interface.d.ts.map +0 -1
- package/src/lib/interfaces/purchase-item.interface.js +0 -9
- package/src/lib/interfaces/purchase-item.interface.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extension.provider.js","sourceRoot":"","sources":["../../../../../../../libs/wallet-sdk/src/lib/providers/extension-provider/extension.provider.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n AccountInfo,\n AvailableAuth,\n BlockchainTransaction,\n ConnectParams,\n ConnectResult,\n NetworkDetails,\n PurchaseItemResult,\n PurchaseItemType,\n SignMessageResult,\n SignTransactionOptions,\n SignTransactionResult,\n UltraResponse,\n UltraWalletProvider,\n UltraWalletSdkOptions,\n WalletEventType,\n} from '../../interfaces';\nimport { isValidChain } from '../../utils/chain-validator';\n\n/**\n * Internal extension-only API exposed by the wallet's content-script-injected\n * `window.ultra` proxy. Not part of the public `UltraWalletProvider`\n * interface — the SDK calls these to manage listener registration with the\n * extension's background service worker.\n */\ninterface ExtensionListenerAPI {\n addExtensionListener?(event: WalletEventType, listenerId: string): Promise<unknown> | unknown;\n removeExtensionListener?(event: WalletEventType, listenerId: string): Promise<unknown> | unknown;\n}\n\nconst HEARTBEAT_INTERVAL_MS = 2_000;\n\nexport class ExtensionProvider implements UltraWalletProvider {\n private readonly eventListeners = new Map<WalletEventType, Array<(data: any) => void>>();\n private readonly listenerIds = new Map<WalletEventType, string>();\n private heartbeatTimer: ReturnType<typeof setInterval> | null = null;\n private messageHandler: ((event: MessageEvent) => void) | null = null;\n\n /**\n * Access window.ultra typed as UltraWalletProvider.\n * At runtime, window.ultra is a Proxy that handles all SDK method calls.\n * We cast here rather than declaring a global Window augmentation to avoid\n * conflicting with the app-level window.d.ts which types window.ultra as IUltraInternalAPI.\n */\n private get walletProvider(): UltraWalletProvider & ExtensionListenerAPI {\n return (window as any).ultra as UltraWalletProvider & ExtensionListenerAPI;\n }\n\n constructor(private readonly options?: UltraWalletSdkOptions) {\n this.initWindowEventListener();\n }\n\n /**\n * Wire-format match: the BG's MessageType.EVENT serialises as the uppercase\n * string 'EVENT'. We uppercase the incoming type so a future SDK build that\n * emits lowercase (or any case variant) still dispatches. Payload shape:\n * `{ event, origin, data }`.\n */\n private initWindowEventListener(): void {\n if (typeof window === 'undefined') return;\n if (this.messageHandler) return;\n this.messageHandler = (event: MessageEvent) => {\n if (event.source !== window || !event.data) return;\n const msg = event.data;\n const msgType = typeof msg.type === 'string' ? msg.type.toUpperCase() : '';\n if (msgType !== 'EVENT' || !msg.payload) return;\n const eventName = msg.payload.event as WalletEventType;\n if (!eventName) return;\n const cbs = this.eventListeners.get(eventName);\n if (cbs) cbs.forEach((cb) => cb(msg.payload.data));\n };\n window.addEventListener('message', this.messageHandler);\n }\n\n async connect(params?: ConnectParams): Promise<UltraResponse<ConnectResult>> {\n const { data: chainId } = await this.walletProvider.getChainId();\n if (!isValidChain(this.options?.environment, chainId)) {\n throw new Error(\n `Wallet environment mismatch: expected \"${this.options?.environment}\" chain, but received \"${chainId}\". Please verify the SDK configuration and the connected network.`,\n );\n }\n const result = await this.walletProvider.connect(params);\n // After connect() succeeds, the origin is now trusted in the BG. Any\n // pre-connect on() calls registered listener-ids that the BG silently\n // dropped (untrusted-origin no-op). Clear and re-register so the heartbeat\n // observes the fresh state.\n if (result?.status === 'success') {\n this.listenerIds.clear();\n for (const event of this.eventListeners.keys()) {\n void this.registerListenerWithExtension(event);\n }\n }\n return result;\n }\n\n disconnect(): Promise<UltraResponse<boolean>> {\n return this.walletProvider.disconnect();\n }\n\n signMessage(message: string): Promise<UltraResponse<SignMessageResult>> {\n return this.walletProvider.signMessage(message);\n }\n\n signTransaction(\n transaction: BlockchainTransaction | BlockchainTransaction[],\n options?: SignTransactionOptions,\n ): Promise<UltraResponse<SignTransactionResult>> {\n return this.walletProvider.signTransaction(transaction, options);\n }\n\n getChainId(): Promise<UltraResponse<string>> {\n return this.walletProvider.getChainId();\n }\n\n purchaseItem(itemType: PurchaseItemType, itemId: string): Promise<UltraResponse<PurchaseItemResult>> {\n return this.walletProvider.purchaseItem(itemType, itemId);\n }\n\n getAccounts(): Promise<UltraResponse<AccountInfo[]>> {\n return this.walletProvider.getAccounts();\n }\n\n getSelectedAccount(): Promise<UltraResponse<AccountInfo>> {\n return this.walletProvider.getSelectedAccount();\n }\n\n getAvailableAuthorizations(): Promise<UltraResponse<AvailableAuth[]>> {\n return this.walletProvider.getAvailableAuthorizations();\n }\n\n on(event: WalletEventType, callback: (data: any) => void): void {\n this.initWindowEventListener();\n const cbs = this.eventListeners.get(event) ?? [];\n cbs.push(callback);\n this.eventListeners.set(event, cbs);\n // Idempotent re-register: every on() call refreshes the BG's record of\n // this listener-id. Defends against extension-reload wipe and the\n // pre-connect untrusted-origin no-op race.\n void this.registerListenerWithExtension(event);\n this.ensureHeartbeat();\n }\n\n off(event: WalletEventType, callback: (data: any) => void): void {\n const cbs = this.eventListeners.get(event);\n if (!cbs) return;\n const idx = cbs.indexOf(callback);\n if (idx >= 0) cbs.splice(idx, 1);\n if (cbs.length === 0) {\n this.eventListeners.delete(event);\n void this.deregisterListenerWithExtension(event);\n }\n }\n\n switchNetwork(chainId: string): Promise<UltraResponse<void>> {\n return this.walletProvider.switchNetwork(chainId);\n }\n\n getNetwork(): Promise<UltraResponse<NetworkDetails>> {\n return this.walletProvider.getNetwork();\n }\n\n getNetworks(): Promise<UltraResponse<NetworkDetails[]>> {\n return this.walletProvider.getNetworks();\n }\n\n addNetwork(params: { name: string; chainId: string; nodeUrl: string }): Promise<UltraResponse<void>> {\n return this.walletProvider.addNetwork(params);\n }\n\n /**\n * Detach the window message listener and clear timers + maps. Safe to call\n * multiple times. Does NOT deregister each listener on the BG — the BG\n * GCs on tab close (verified via the S5(b) dedup work + tab-close cleanup\n * in `EventsService.removeTabListeners`). Calling N RPCs at dispose-time\n * would slow the page-unload path for no benefit.\n */\n dispose(): void {\n if (this.heartbeatTimer != null) {\n clearInterval(this.heartbeatTimer);\n this.heartbeatTimer = null;\n }\n if (this.messageHandler && typeof window !== 'undefined') {\n window.removeEventListener('message', this.messageHandler);\n this.messageHandler = null;\n }\n this.eventListeners.clear();\n this.listenerIds.clear();\n }\n\n private async registerListenerWithExtension(event: WalletEventType): Promise<void> {\n if (!this.isExtensionAvailable()) return;\n const id = this.listenerIds.get(event) ?? this.generateListenerId();\n this.listenerIds.set(event, id);\n try {\n const result = this.walletProvider.addExtensionListener?.(event, id);\n if (result && typeof (result as Promise<unknown>).catch === 'function') {\n // Don't drop the id on rejection — heartbeat will retry.\n (result as Promise<unknown>).catch(() => undefined);\n }\n } catch {\n // Swallow: heartbeat retry will pick this up.\n }\n }\n\n private async deregisterListenerWithExtension(event: WalletEventType): Promise<void> {\n if (!this.isExtensionAvailable()) return;\n const id = this.listenerIds.get(event);\n if (!id) return;\n this.listenerIds.delete(event);\n try {\n const result = this.walletProvider.removeExtensionListener?.(event, id);\n if (result && typeof (result as Promise<unknown>).catch === 'function') {\n (result as Promise<unknown>).catch(() => undefined);\n }\n } catch {\n // Ignore — extension may have been removed.\n }\n }\n\n private ensureHeartbeat(): void {\n if (this.heartbeatTimer != null || typeof window === 'undefined') return;\n // Cadence matches the toolkit's prior workaround. Lower = BG storage-write\n // overhead; higher = wider post-reload event-drop window.\n this.heartbeatTimer = setInterval(() => this.heartbeatTick(), HEARTBEAT_INTERVAL_MS);\n }\n\n private heartbeatTick(): void {\n if (!this.isExtensionAvailable()) return;\n let hasAny = false;\n for (const cbs of this.eventListeners.values()) {\n if (cbs.length > 0) {\n hasAny = true;\n break;\n }\n }\n if (!hasAny) return;\n for (const event of this.eventListeners.keys()) {\n void this.registerListenerWithExtension(event);\n }\n }\n\n private isExtensionAvailable(): boolean {\n return typeof window !== 'undefined' && !!(window as any).ultra;\n }\n\n private generateListenerId(): string {\n if (typeof crypto !== 'undefined' && typeof crypto.randomUUID === 'function') {\n return crypto.randomUUID();\n }\n return Math.random().toString(36).slice(2) + Date.now().toString(36);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"extension.provider.js","sourceRoot":"","sources":["../../../../../../../libs/wallet-sdk/src/lib/providers/extension-provider/extension.provider.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n AccountInfo,\n AvailableAuth,\n BlockchainTransaction,\n ConnectParams,\n ConnectResult,\n NetworkDetails,\n SignMessageResult,\n SignTransactionOptions,\n SignTransactionResult,\n UltraResponse,\n UltraWalletProvider,\n UltraWalletSdkOptions,\n WalletEventType,\n} from '../../interfaces';\nimport { isValidChain } from '../../utils/chain-validator';\n\n/**\n * Internal extension-only API exposed by the wallet's content-script-injected\n * `window.ultra` proxy. Not part of the public `UltraWalletProvider`\n * interface — the SDK calls these to manage listener registration with the\n * extension's background service worker.\n */\ninterface ExtensionListenerAPI {\n addExtensionListener?(event: WalletEventType, listenerId: string): Promise<unknown> | unknown;\n removeExtensionListener?(event: WalletEventType, listenerId: string): Promise<unknown> | unknown;\n}\n\nconst HEARTBEAT_INTERVAL_MS = 2_000;\n\nexport class ExtensionProvider implements UltraWalletProvider {\n private readonly eventListeners = new Map<WalletEventType, Array<(data: any) => void>>();\n private readonly listenerIds = new Map<WalletEventType, string>();\n private heartbeatTimer: ReturnType<typeof setInterval> | null = null;\n private messageHandler: ((event: MessageEvent) => void) | null = null;\n\n /**\n * Access window.ultra typed as UltraWalletProvider.\n * At runtime, window.ultra is a Proxy that handles all SDK method calls.\n * We cast here rather than declaring a global Window augmentation to avoid\n * conflicting with the app-level window.d.ts which types window.ultra as IUltraInternalAPI.\n */\n private get walletProvider(): UltraWalletProvider & ExtensionListenerAPI {\n return (window as any).ultra as UltraWalletProvider & ExtensionListenerAPI;\n }\n\n constructor(private readonly options?: UltraWalletSdkOptions) {\n this.initWindowEventListener();\n }\n\n /**\n * Wire-format match: the BG's MessageType.EVENT serialises as the uppercase\n * string 'EVENT'. We uppercase the incoming type so a future SDK build that\n * emits lowercase (or any case variant) still dispatches. Payload shape:\n * `{ event, origin, data }`.\n */\n private initWindowEventListener(): void {\n if (typeof window === 'undefined') return;\n if (this.messageHandler) return;\n this.messageHandler = (event: MessageEvent) => {\n if (event.source !== window || !event.data) return;\n const msg = event.data;\n const msgType = typeof msg.type === 'string' ? msg.type.toUpperCase() : '';\n if (msgType !== 'EVENT' || !msg.payload) return;\n const eventName = msg.payload.event as WalletEventType;\n if (!eventName) return;\n const cbs = this.eventListeners.get(eventName);\n if (cbs) cbs.forEach((cb) => cb(msg.payload.data));\n };\n window.addEventListener('message', this.messageHandler);\n }\n\n async connect(params?: ConnectParams): Promise<UltraResponse<ConnectResult>> {\n const { data: chainId } = await this.walletProvider.getChainId();\n if (!isValidChain(this.options?.environment, chainId)) {\n throw new Error(\n `Wallet environment mismatch: expected \"${this.options?.environment}\" chain, but received \"${chainId}\". Please verify the SDK configuration and the connected network.`,\n );\n }\n const result = await this.walletProvider.connect(params);\n // After connect() succeeds, the origin is now trusted in the BG. Any\n // pre-connect on() calls registered listener-ids that the BG silently\n // dropped (untrusted-origin no-op). Clear and re-register so the heartbeat\n // observes the fresh state.\n if (result?.status === 'success') {\n this.listenerIds.clear();\n for (const event of this.eventListeners.keys()) {\n void this.registerListenerWithExtension(event);\n }\n }\n return result;\n }\n\n disconnect(): Promise<UltraResponse<boolean>> {\n return this.walletProvider.disconnect();\n }\n\n signMessage(message: string): Promise<UltraResponse<SignMessageResult>> {\n return this.walletProvider.signMessage(message);\n }\n\n signTransaction(\n transaction: BlockchainTransaction | BlockchainTransaction[],\n options?: SignTransactionOptions,\n ): Promise<UltraResponse<SignTransactionResult>> {\n return this.walletProvider.signTransaction(transaction, options);\n }\n\n getChainId(): Promise<UltraResponse<string>> {\n return this.walletProvider.getChainId();\n }\n\n getAccounts(): Promise<UltraResponse<AccountInfo[]>> {\n return this.walletProvider.getAccounts();\n }\n\n getSelectedAccount(): Promise<UltraResponse<AccountInfo>> {\n return this.walletProvider.getSelectedAccount();\n }\n\n getAvailableAuthorizations(): Promise<UltraResponse<AvailableAuth[]>> {\n return this.walletProvider.getAvailableAuthorizations();\n }\n\n on(event: WalletEventType, callback: (data: any) => void): void {\n this.initWindowEventListener();\n const cbs = this.eventListeners.get(event) ?? [];\n cbs.push(callback);\n this.eventListeners.set(event, cbs);\n // Idempotent re-register: every on() call refreshes the BG's record of\n // this listener-id. Defends against extension-reload wipe and the\n // pre-connect untrusted-origin no-op race.\n void this.registerListenerWithExtension(event);\n this.ensureHeartbeat();\n }\n\n off(event: WalletEventType, callback: (data: any) => void): void {\n const cbs = this.eventListeners.get(event);\n if (!cbs) return;\n const idx = cbs.indexOf(callback);\n if (idx >= 0) cbs.splice(idx, 1);\n if (cbs.length === 0) {\n this.eventListeners.delete(event);\n void this.deregisterListenerWithExtension(event);\n }\n }\n\n switchNetwork(chainId: string): Promise<UltraResponse<void>> {\n return this.walletProvider.switchNetwork(chainId);\n }\n\n getNetwork(): Promise<UltraResponse<NetworkDetails>> {\n return this.walletProvider.getNetwork();\n }\n\n getNetworks(): Promise<UltraResponse<NetworkDetails[]>> {\n return this.walletProvider.getNetworks();\n }\n\n /**\n * Detach the window message listener and clear timers + maps. Safe to call\n * multiple times. Does NOT deregister each listener on the BG — the BG\n * GCs on tab close (verified via the S5(b) dedup work + tab-close cleanup\n * in `EventsService.removeTabListeners`). Calling N RPCs at dispose-time\n * would slow the page-unload path for no benefit.\n */\n dispose(): void {\n if (this.heartbeatTimer != null) {\n clearInterval(this.heartbeatTimer);\n this.heartbeatTimer = null;\n }\n if (this.messageHandler && typeof window !== 'undefined') {\n window.removeEventListener('message', this.messageHandler);\n this.messageHandler = null;\n }\n this.eventListeners.clear();\n this.listenerIds.clear();\n }\n\n private async registerListenerWithExtension(event: WalletEventType): Promise<void> {\n if (!this.isExtensionAvailable()) return;\n const id = this.listenerIds.get(event) ?? this.generateListenerId();\n this.listenerIds.set(event, id);\n try {\n const result = this.walletProvider.addExtensionListener?.(event, id);\n if (result && typeof (result as Promise<unknown>).catch === 'function') {\n // Don't drop the id on rejection — heartbeat will retry.\n (result as Promise<unknown>).catch(() => undefined);\n }\n } catch {\n // Swallow: heartbeat retry will pick this up.\n }\n }\n\n private async deregisterListenerWithExtension(event: WalletEventType): Promise<void> {\n if (!this.isExtensionAvailable()) return;\n const id = this.listenerIds.get(event);\n if (!id) return;\n this.listenerIds.delete(event);\n try {\n const result = this.walletProvider.removeExtensionListener?.(event, id);\n if (result && typeof (result as Promise<unknown>).catch === 'function') {\n (result as Promise<unknown>).catch(() => undefined);\n }\n } catch {\n // Ignore — extension may have been removed.\n }\n }\n\n private ensureHeartbeat(): void {\n if (this.heartbeatTimer != null || typeof window === 'undefined') return;\n // Cadence matches the toolkit's prior workaround. Lower = BG storage-write\n // overhead; higher = wider post-reload event-drop window.\n this.heartbeatTimer = setInterval(() => this.heartbeatTick(), HEARTBEAT_INTERVAL_MS);\n }\n\n private heartbeatTick(): void {\n if (!this.isExtensionAvailable()) return;\n let hasAny = false;\n for (const cbs of this.eventListeners.values()) {\n if (cbs.length > 0) {\n hasAny = true;\n break;\n }\n }\n if (!hasAny) return;\n for (const event of this.eventListeners.keys()) {\n void this.registerListenerWithExtension(event);\n }\n }\n\n private isExtensionAvailable(): boolean {\n return typeof window !== 'undefined' && !!(window as any).ultra;\n }\n\n private generateListenerId(): string {\n if (typeof crypto !== 'undefined' && typeof crypto.randomUUID === 'function') {\n return crypto.randomUUID();\n }\n return Math.random().toString(36).slice(2) + Date.now().toString(36);\n }\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AccountInfo, AvailableAuth, BlockchainTransaction, ConnectParams, ConnectResult, NetworkDetails,
|
|
1
|
+
import { AccountInfo, AvailableAuth, BlockchainTransaction, ConnectParams, ConnectResult, NetworkDetails, SignMessageResult, SignTransactionOptions, SignTransactionResult, UltraResponse, UltraWalletProvider, UltraWalletSdkOptions, WalletEventType } from '../../interfaces';
|
|
2
2
|
export declare class WebProvider implements UltraWalletProvider {
|
|
3
3
|
private readonly options?;
|
|
4
4
|
private readonly windowManager;
|
|
@@ -9,7 +9,6 @@ export declare class WebProvider implements UltraWalletProvider {
|
|
|
9
9
|
signMessage(message: string): Promise<UltraResponse<SignMessageResult>>;
|
|
10
10
|
signTransaction(transaction: BlockchainTransaction | BlockchainTransaction[], options?: SignTransactionOptions): Promise<UltraResponse<SignTransactionResult>>;
|
|
11
11
|
getChainId(): Promise<UltraResponse<string>>;
|
|
12
|
-
purchaseItem(itemType: PurchaseItemType, itemId: string): Promise<UltraResponse<PurchaseItemResult>>;
|
|
13
12
|
getAccounts(): Promise<UltraResponse<AccountInfo[]>>;
|
|
14
13
|
getSelectedAccount(): Promise<UltraResponse<AccountInfo>>;
|
|
15
14
|
getAvailableAuthorizations(): Promise<UltraResponse<AvailableAuth[]>>;
|
|
@@ -18,11 +17,6 @@ export declare class WebProvider implements UltraWalletProvider {
|
|
|
18
17
|
switchNetwork(_chainId: string): Promise<UltraResponse<void>>;
|
|
19
18
|
getNetwork(): Promise<UltraResponse<NetworkDetails>>;
|
|
20
19
|
getNetworks(): Promise<UltraResponse<NetworkDetails[]>>;
|
|
21
|
-
addNetwork(_params: {
|
|
22
|
-
name: string;
|
|
23
|
-
chainId: string;
|
|
24
|
-
nodeUrl: string;
|
|
25
|
-
}): Promise<UltraResponse<void>>;
|
|
26
20
|
dispose(): void;
|
|
27
21
|
private resolveWalletUrl;
|
|
28
22
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web.provider.d.ts","sourceRoot":"","sources":["../../../../../../../libs/wallet-sdk/src/lib/providers/web-provider/web.provider.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,WAAW,EACX,aAAa,EACb,qBAAqB,EACrB,aAAa,EACb,aAAa,EACb,cAAc,
|
|
1
|
+
{"version":3,"file":"web.provider.d.ts","sourceRoot":"","sources":["../../../../../../../libs/wallet-sdk/src/lib/providers/web-provider/web.provider.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,WAAW,EACX,aAAa,EACb,qBAAqB,EACrB,aAAa,EACb,aAAa,EACb,cAAc,EAEd,iBAAiB,EACjB,sBAAsB,EACtB,qBAAqB,EACrB,aAAa,EACb,mBAAmB,EACnB,qBAAqB,EACrB,eAAe,EAChB,MAAM,kBAAkB,CAAC;AAE1B,qBAAa,WAAY,YAAW,mBAAmB;IAIzC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;IAHrC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;gBAErB,OAAO,CAAC,EAAE,qBAAqB;IAK5D,OAAO,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;IAIvE,UAAU,IAAI,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAI7C,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;IAIvE,eAAe,CACb,WAAW,EAAE,qBAAqB,GAAG,qBAAqB,EAAE,EAC5D,OAAO,CAAC,EAAE,sBAAsB,GAC/B,OAAO,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC;IAI1C,UAAU,IAAI,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAuBlD,WAAW,IAAI,OAAO,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC,CAAC;IAIpD,kBAAkB,IAAI,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;IAIzD,0BAA0B,IAAI,OAAO,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC,CAAC;IAKrE,EAAE,CAAC,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI;IAOjE,GAAG,CAAC,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI;IAKlE,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAI7D,UAAU,IAAI,OAAO,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;IAIpD,WAAW,IAAI,OAAO,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC,CAAC;IAIvD,OAAO,IAAI,IAAI;IAKf,OAAO,CAAC,gBAAgB;CAIzB"}
|
|
@@ -39,12 +39,6 @@ export class WebProvider {
|
|
|
39
39
|
return this.clientMessenger.sendRequest('getChainId', {});
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
|
-
purchaseItem(itemType, itemId) {
|
|
43
|
-
return this.clientMessenger.sendRequest('purchaseItem', {
|
|
44
|
-
itemType,
|
|
45
|
-
itemId,
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
42
|
getAccounts() {
|
|
49
43
|
return this.clientMessenger.sendRequest('getAccounts', {});
|
|
50
44
|
}
|
|
@@ -74,10 +68,6 @@ export class WebProvider {
|
|
|
74
68
|
getNetworks() {
|
|
75
69
|
throw new Error('Not supported in web provider');
|
|
76
70
|
}
|
|
77
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
78
|
-
addNetwork(_params) {
|
|
79
|
-
throw new Error('Not supported in web provider');
|
|
80
|
-
}
|
|
81
71
|
dispose() {
|
|
82
72
|
// Web provider holds no long-lived timers/listeners — the popup-based
|
|
83
73
|
// postMessage transport is request/response only.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web.provider.js","sourceRoot":"","sources":["../../../../../../../libs/wallet-sdk/src/lib/providers/web-provider/web.provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,oBAAoB,MAAM,sCAAsC,CAAC;AACxE,OAAO,
|
|
1
|
+
{"version":3,"file":"web.provider.js","sourceRoot":"","sources":["../../../../../../../libs/wallet-sdk/src/lib/providers/web-provider/web.provider.ts"],"names":[],"mappings":"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","sourcesContent":["import { ClientMessenger } from '../../common/client-messenger';\nimport { WindowManager } from '../../common/window-manager';\nimport UltraWalletSdkConfig from '../../config/ultra-wallet-sdk.config';\nimport {\n AccountInfo,\n AvailableAuth,\n BlockchainTransaction,\n ConnectParams,\n ConnectResult,\n NetworkDetails,\n ResponseStatus,\n SignMessageResult,\n SignTransactionOptions,\n SignTransactionResult,\n UltraResponse,\n UltraWalletProvider,\n UltraWalletSdkOptions,\n WalletEventType,\n} from '../../interfaces';\n\nexport class WebProvider implements UltraWalletProvider {\n private readonly windowManager: WindowManager;\n private readonly clientMessenger: ClientMessenger;\n\n constructor(private readonly options?: UltraWalletSdkOptions) {\n this.windowManager = new WindowManager(this.resolveWalletUrl());\n this.clientMessenger = new ClientMessenger(this.windowManager);\n }\n\n connect(options?: ConnectParams): Promise<UltraResponse<ConnectResult>> {\n return this.clientMessenger.sendRequest<ConnectResult>('connect', { options });\n }\n\n disconnect(): Promise<UltraResponse<boolean>> {\n return this.clientMessenger.sendRequest<boolean>('disconnect', {});\n }\n\n signMessage(message: string): Promise<UltraResponse<SignMessageResult>> {\n return this.clientMessenger.sendRequest<SignMessageResult>('signMessage', { message });\n }\n\n signTransaction(\n transaction: BlockchainTransaction | BlockchainTransaction[],\n options?: SignTransactionOptions,\n ): Promise<UltraResponse<SignTransactionResult>> {\n return this.clientMessenger.sendRequest<SignTransactionResult>('signTransaction', { transaction, options });\n }\n\n async getChainId(): Promise<UltraResponse<string>> {\n const environment = this.options?.environment || 'mainnet';\n\n switch (environment) {\n case 'mainnet':\n const mainnetChainId = UltraWalletSdkConfig.networkInfo.mainnet.chainId;\n return {\n status: ResponseStatus.SUCCESS,\n data: mainnetChainId,\n };\n\n case 'testnet':\n const testnetChainId = UltraWalletSdkConfig.networkInfo.testnet.chainId;\n return {\n status: ResponseStatus.SUCCESS,\n data: testnetChainId,\n };\n\n default:\n return this.clientMessenger.sendRequest<string>('getChainId', {});\n }\n }\n\n getAccounts(): Promise<UltraResponse<AccountInfo[]>> {\n return this.clientMessenger.sendRequest<AccountInfo[]>('getAccounts', {});\n }\n\n getSelectedAccount(): Promise<UltraResponse<AccountInfo>> {\n return this.clientMessenger.sendRequest<AccountInfo>('getSelectedAccount', {});\n }\n\n getAvailableAuthorizations(): Promise<UltraResponse<AvailableAuth[]>> {\n return this.clientMessenger.sendRequest<AvailableAuth[]>('getAvailableAuthorizations', {});\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n on(_event: WalletEventType, _callback: (data: any) => void): void {\n // The Web Wallet provider communicates via postMessage through a popup window.\n // Long-lived event subscriptions are not supported in this transport model.\n // Consumers requiring real-time events should use the Extension provider.\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n off(_event: WalletEventType, _callback: (data: any) => void): void {\n // Not supported in web provider — see on() above.\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n switchNetwork(_chainId: string): Promise<UltraResponse<void>> {\n throw new Error('Not supported in web provider');\n }\n\n getNetwork(): Promise<UltraResponse<NetworkDetails>> {\n throw new Error('Not supported in web provider');\n }\n\n getNetworks(): Promise<UltraResponse<NetworkDetails[]>> {\n throw new Error('Not supported in web provider');\n }\n\n dispose(): void {\n // Web provider holds no long-lived timers/listeners — the popup-based\n // postMessage transport is request/response only.\n }\n\n private resolveWalletUrl(): string {\n const env = UltraWalletSdkConfig.walletUrls[this.options?.environment || 'mainnet'];\n return env || this.options.environment;\n }\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AccountInfo, AvailableAuth, BlockchainTransaction, ConnectParams, ConnectResult, NetworkDetails,
|
|
1
|
+
import { AccountInfo, AvailableAuth, BlockchainTransaction, ConnectParams, ConnectResult, NetworkDetails, SignMessageResult, SignTransactionOptions, SignTransactionResult, UltraResponse, UltraWalletSdkOptions, WalletEventType } from './interfaces';
|
|
2
2
|
/**
|
|
3
3
|
* UltraWalletClient acts as a Facade for interacting with the Ultra Wallet.
|
|
4
4
|
* It provides a unified API regardless of the underlying provider implementation (Extension or Web).
|
|
@@ -19,7 +19,6 @@ export declare class UltraWalletSDK {
|
|
|
19
19
|
signMessage(message: string): Promise<UltraResponse<SignMessageResult>>;
|
|
20
20
|
signTransaction(transaction: BlockchainTransaction | BlockchainTransaction[], options?: SignTransactionOptions): Promise<UltraResponse<SignTransactionResult>>;
|
|
21
21
|
getChainId(): Promise<UltraResponse<string>>;
|
|
22
|
-
purchaseItem(itemType: PurchaseItemType, itemId: string): Promise<UltraResponse<PurchaseItemResult>>;
|
|
23
22
|
getAccounts(): Promise<UltraResponse<AccountInfo[]>>;
|
|
24
23
|
getSelectedAccount(): Promise<UltraResponse<AccountInfo>>;
|
|
25
24
|
getAvailableAuthorizations(): Promise<UltraResponse<AvailableAuth[]>>;
|
|
@@ -28,11 +27,6 @@ export declare class UltraWalletSDK {
|
|
|
28
27
|
switchNetwork(chainId: string): Promise<UltraResponse<void>>;
|
|
29
28
|
getNetwork(): Promise<UltraResponse<NetworkDetails>>;
|
|
30
29
|
getNetworks(): Promise<UltraResponse<NetworkDetails[]>>;
|
|
31
|
-
addNetwork(params: {
|
|
32
|
-
name: string;
|
|
33
|
-
chainId: string;
|
|
34
|
-
nodeUrl: string;
|
|
35
|
-
}): Promise<UltraResponse<void>>;
|
|
36
30
|
dispose(): void;
|
|
37
31
|
private resolveWalletProvider;
|
|
38
32
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ultra-wallet-sdk.d.ts","sourceRoot":"","sources":["../../../../../libs/wallet-sdk/src/lib/ultra-wallet-sdk.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,aAAa,EACb,qBAAqB,EACrB,aAAa,EACb,aAAa,EACb,cAAc,EACd,
|
|
1
|
+
{"version":3,"file":"ultra-wallet-sdk.d.ts","sourceRoot":"","sources":["../../../../../libs/wallet-sdk/src/lib/ultra-wallet-sdk.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,aAAa,EACb,qBAAqB,EACrB,aAAa,EACb,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,sBAAsB,EACtB,qBAAqB,EACrB,aAAa,EAEb,qBAAqB,EAErB,eAAe,EAChB,MAAM,cAAc,CAAC;AAItB;;;GAGG;AACH,qBAAa,cAAc;IAUb,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;IATrC,OAAO,CAAC,QAAQ,CAAsB;IAEtC;;;;;;OAMG;gBAC0B,OAAO,CAAC,EAAE,qBAAqB;IAI5D,OAAO,CAAC,MAAM,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;IAItE,UAAU,IAAI,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAI7C,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;IAIvE,eAAe,CACb,WAAW,EAAE,qBAAqB,GAAG,qBAAqB,EAAE,EAC5D,OAAO,CAAC,EAAE,sBAAsB,GAC/B,OAAO,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC;IAIhD,UAAU,IAAI,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAI5C,WAAW,IAAI,OAAO,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC,CAAC;IAIpD,kBAAkB,IAAI,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;IAIzD,0BAA0B,IAAI,OAAO,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC,CAAC;IAIrE,EAAE,CAAC,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI;IAI/D,GAAG,CAAC,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI;IAIhE,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAI5D,UAAU,IAAI,OAAO,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;IAIpD,WAAW,IAAI,OAAO,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC,CAAC;IAIvD,OAAO,IAAI,IAAI;IAIf,OAAO,CAAC,qBAAqB;CAY9B"}
|
|
@@ -31,9 +31,6 @@ export class UltraWalletSDK {
|
|
|
31
31
|
getChainId() {
|
|
32
32
|
return this.provider.getChainId();
|
|
33
33
|
}
|
|
34
|
-
purchaseItem(itemType, itemId) {
|
|
35
|
-
return this.provider.purchaseItem(itemType, itemId);
|
|
36
|
-
}
|
|
37
34
|
getAccounts() {
|
|
38
35
|
return this.provider.getAccounts();
|
|
39
36
|
}
|
|
@@ -58,9 +55,6 @@ export class UltraWalletSDK {
|
|
|
58
55
|
getNetworks() {
|
|
59
56
|
return this.provider.getNetworks();
|
|
60
57
|
}
|
|
61
|
-
addNetwork(params) {
|
|
62
|
-
return this.provider.addNetwork(params);
|
|
63
|
-
}
|
|
64
58
|
dispose() {
|
|
65
59
|
this.provider.dispose();
|
|
66
60
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ultra-wallet-sdk.js","sourceRoot":"","sources":["../../../../../libs/wallet-sdk/src/lib/ultra-wallet-sdk.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ultra-wallet-sdk.js","sourceRoot":"","sources":["../../../../../libs/wallet-sdk/src/lib/ultra-wallet-sdk.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAEzD;;;GAGG;AACH,MAAM,OAAO,cAAc;IAGzB;;;;;;OAMG;IACH,YAA6B,OAA+B;QAA/B,YAAO,GAAP,OAAO,CAAwB;QAC1D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/C,CAAC;IAED,OAAO,CAAC,MAAsB;QAC5B,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;IACpC,CAAC;IAED,WAAW,CAAC,OAAe;QACzB,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAC5C,CAAC;IAED,eAAe,CACb,WAA4D,EAC5D,OAAgC;QAEhC,OAAO,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC7D,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;IACpC,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;IACrC,CAAC;IAED,kBAAkB;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE,CAAC;IAC5C,CAAC;IAED,0BAA0B;QACxB,OAAO,IAAI,CAAC,QAAQ,CAAC,0BAA0B,EAAE,CAAC;IACpD,CAAC;IAED,EAAE,CAAC,KAAsB,EAAE,QAA6B;QACtD,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACpC,CAAC;IAED,GAAG,CAAC,KAAsB,EAAE,QAA6B;QACvD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACrC,CAAC;IAED,aAAa,CAAC,OAAe;QAC3B,OAAO,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;IACpC,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;IACrC,CAAC;IAED,OAAO;QACL,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;IAC1B,CAAC;IAEO,qBAAqB;QAC3B,MAAM,iBAAiB,GAAuC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC;QACrF,IAAI,iBAAiB,KAAK,WAAW,EAAE,CAAC;YACtC,OAAO,IAAI,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7C,CAAC;QACD,IAAI,iBAAiB,KAAK,KAAK,EAAE,CAAC;YAChC,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvC,CAAC;QAED,MAAM,kBAAkB,GAAG,oBAAoB,EAAE,CAAC;QAClD,OAAO,kBAAkB,CAAC,CAAC,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAClG,CAAC;CACF","sourcesContent":["import {\n AccountInfo,\n AvailableAuth,\n BlockchainTransaction,\n ConnectParams,\n ConnectResult,\n NetworkDetails,\n SignMessageResult,\n SignTransactionOptions,\n SignTransactionResult,\n UltraResponse,\n UltraWalletProvider,\n UltraWalletSdkOptions,\n UltraWalletSdkProvider,\n WalletEventType,\n} from './interfaces';\nimport { ExtensionProvider, WebProvider } from './providers';\nimport { isExtensionAvailable } from './utils/detection';\n\n/**\n * UltraWalletClient acts as a Facade for interacting with the Ultra Wallet.\n * It provides a unified API regardless of the underlying provider implementation (Extension or Web).\n */\nexport class UltraWalletSDK {\n private provider: UltraWalletProvider;\n\n /**\n * Constructs an UltraWalletClient instance.\n * If the Ultra Wallet Extension is available (window.ultra), it will be used automatically.\n * If the Extension is not available, the Web Wallet provider will be initialized using the given network options.\n *\n * @param {UltraWalletSdkOptions} [options] - Configuration options for the Web Wallet fallback (environment or custom URL).\n */\n constructor(private readonly options?: UltraWalletSdkOptions) {\n this.provider = this.resolveWalletProvider();\n }\n\n connect(params?: ConnectParams): Promise<UltraResponse<ConnectResult>> {\n return this.provider.connect(params);\n }\n\n disconnect(): Promise<UltraResponse<boolean>> {\n return this.provider.disconnect();\n }\n\n signMessage(message: string): Promise<UltraResponse<SignMessageResult>> {\n return this.provider.signMessage(message);\n }\n\n signTransaction(\n transaction: BlockchainTransaction | BlockchainTransaction[],\n options?: SignTransactionOptions,\n ): Promise<UltraResponse<SignTransactionResult>> {\n return this.provider.signTransaction(transaction, options);\n }\n\n getChainId(): Promise<UltraResponse<string>> {\n return this.provider.getChainId();\n }\n\n getAccounts(): Promise<UltraResponse<AccountInfo[]>> {\n return this.provider.getAccounts();\n }\n\n getSelectedAccount(): Promise<UltraResponse<AccountInfo>> {\n return this.provider.getSelectedAccount();\n }\n\n getAvailableAuthorizations(): Promise<UltraResponse<AvailableAuth[]>> {\n return this.provider.getAvailableAuthorizations();\n }\n\n on(event: WalletEventType, callback: (data: any) => void): void {\n this.provider.on(event, callback);\n }\n\n off(event: WalletEventType, callback: (data: any) => void): void {\n this.provider.off(event, callback);\n }\n\n switchNetwork(chainId: string): Promise<UltraResponse<void>> {\n return this.provider.switchNetwork(chainId);\n }\n\n getNetwork(): Promise<UltraResponse<NetworkDetails>> {\n return this.provider.getNetwork();\n }\n\n getNetworks(): Promise<UltraResponse<NetworkDetails[]>> {\n return this.provider.getNetworks();\n }\n\n dispose(): void {\n this.provider.dispose();\n }\n\n private resolveWalletProvider(): UltraWalletProvider {\n const requestedProvider: UltraWalletSdkProvider | undefined = this.options?.provider;\n if (requestedProvider === 'extension') {\n return new ExtensionProvider(this.options);\n }\n if (requestedProvider === 'web') {\n return new WebProvider(this.options);\n }\n\n const extensionAvailable = isExtensionAvailable();\n return extensionAvailable ? new ExtensionProvider(this.options) : new WebProvider(this.options);\n }\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"purchase-item.interface.d.ts","sourceRoot":"","sources":["../../../../../../libs/wallet-sdk/src/lib/interfaces/purchase-item.interface.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,oBAAY,gBAAgB;IAC1B,YAAY,gBAAgB;IAC5B,YAAY,gBAAgB;CAC7B"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Enumeration of supported item types that can be purchased via the Ultra Wallet.
|
|
3
|
-
*/
|
|
4
|
-
export var PurchaseItemType;
|
|
5
|
-
(function (PurchaseItemType) {
|
|
6
|
-
PurchaseItemType["UNIQ_FACTORY"] = "UniqFactory";
|
|
7
|
-
PurchaseItemType["GAME_FACTORY"] = "GameFactory";
|
|
8
|
-
})(PurchaseItemType || (PurchaseItemType = {}));
|
|
9
|
-
//# sourceMappingURL=purchase-item.interface.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"purchase-item.interface.js","sourceRoot":"","sources":["../../../../../../libs/wallet-sdk/src/lib/interfaces/purchase-item.interface.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAN,IAAY,gBAGX;AAHD,WAAY,gBAAgB;IAC1B,gDAA4B,CAAA;IAC5B,gDAA4B,CAAA;AAC9B,CAAC,EAHW,gBAAgB,KAAhB,gBAAgB,QAG3B","sourcesContent":["/**\n * Enumeration of supported item types that can be purchased via the Ultra Wallet.\n */\nexport enum PurchaseItemType {\n UNIQ_FACTORY = 'UniqFactory',\n GAME_FACTORY = 'GameFactory',\n}\n"]}
|