@ultraos/wallet-sdk 0.0.9 → 0.0.11

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.
Files changed (27) hide show
  1. package/package.json +1 -1
  2. package/src/lib/common/client-messenger.d.ts +10 -1
  3. package/src/lib/common/client-messenger.d.ts.map +1 -1
  4. package/src/lib/common/client-messenger.js +85 -55
  5. package/src/lib/common/client-messenger.js.map +1 -1
  6. package/src/lib/common/window-manager.js +1 -1
  7. package/src/lib/common/window-manager.js.map +1 -1
  8. package/src/lib/config/ultra-wallet-sdk.config.js +2 -2
  9. package/src/lib/config/ultra-wallet-sdk.config.js.map +1 -1
  10. package/src/lib/interfaces/blockchain-transaction.interface.d.ts +6 -0
  11. package/src/lib/interfaces/blockchain-transaction.interface.d.ts.map +1 -1
  12. package/src/lib/interfaces/blockchain-transaction.interface.js.map +1 -1
  13. package/src/lib/interfaces/wallet-provider.interface.d.ts +3 -2
  14. package/src/lib/interfaces/wallet-provider.interface.d.ts.map +1 -1
  15. package/src/lib/interfaces/wallet-provider.interface.js.map +1 -1
  16. package/src/lib/providers/extension-provider/extension.provider.d.ts +2 -2
  17. package/src/lib/providers/extension-provider/extension.provider.d.ts.map +1 -1
  18. package/src/lib/providers/extension-provider/extension.provider.js +2 -2
  19. package/src/lib/providers/extension-provider/extension.provider.js.map +1 -1
  20. package/src/lib/providers/web-provider/web.provider.d.ts +2 -2
  21. package/src/lib/providers/web-provider/web.provider.d.ts.map +1 -1
  22. package/src/lib/providers/web-provider/web.provider.js +22 -5
  23. package/src/lib/providers/web-provider/web.provider.js.map +1 -1
  24. package/src/lib/ultra-wallet-sdk.d.ts +2 -2
  25. package/src/lib/ultra-wallet-sdk.d.ts.map +1 -1
  26. package/src/lib/ultra-wallet-sdk.js +2 -2
  27. package/src/lib/ultra-wallet-sdk.js.map +1 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ultraos/wallet-sdk",
3
- "version": "0.0.9",
3
+ "version": "0.0.11",
4
4
  "homepage": "https://developers.ultra.io",
5
5
  "dependencies": {
6
6
  "json-rpc-2.0": "^1.7.0",
@@ -5,6 +5,15 @@ export declare class ClientMessenger {
5
5
  private rpcClient;
6
6
  private pendingRequest;
7
7
  constructor(windowManager: WindowManager);
8
- sendRequest<T>(requestMethod: string, requestParams: object): Promise<UltraResponse<T>>;
8
+ private initializeRpcClient;
9
+ private setupMessageListener;
10
+ sendRequest<T>(requestMethod: string, requestParams: Record<string, unknown>): Promise<UltraResponse<T>>;
11
+ private isWalletWindowClosed;
12
+ private ensureWalletWindow;
13
+ private executeRequest;
14
+ private isValidReadyMessage;
15
+ private processRpcRequest;
16
+ private rejectWithError;
17
+ private createErrorResponse;
9
18
  }
10
19
  //# sourceMappingURL=client-messenger.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client-messenger.d.ts","sourceRoot":"","sources":["../../../../../../libs/wallet-sdk/src/lib/common/client-messenger.ts"],"names":[],"mappings":"AAGA,OAAO,EAAgD,aAAa,EAAE,MAAM,eAAe,CAAC;AAG5F,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,qBAAa,eAAe;IAC1B,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,SAAS,CAAgB;IACjC,OAAO,CAAC,cAAc,CAAS;gBAEnB,aAAa,EAAE,aAAa;IAmBlC,WAAW,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;CA4E9F"}
1
+ {"version":3,"file":"client-messenger.d.ts","sourceRoot":"","sources":["../../../../../../libs/wallet-sdk/src/lib/common/client-messenger.ts"],"names":[],"mappings":"AAGA,OAAO,EAAgD,aAAa,EAAE,MAAM,eAAe,CAAC;AAG5F,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,qBAAa,eAAe;IAC1B,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,SAAS,CAAgB;IACjC,OAAO,CAAC,cAAc,CAAS;gBAEnB,aAAa,EAAE,aAAa;IAMxC,OAAO,CAAC,mBAAmB;IAW3B,OAAO,CAAC,oBAAoB;IAQtB,WAAW,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAiB9G,OAAO,CAAC,oBAAoB;IAI5B,OAAO,CAAC,kBAAkB;YAQZ,cAAc;IAgD5B,OAAO,CAAC,mBAAmB;YAOb,iBAAiB;IAuB/B,OAAO,CAAC,eAAe;IAKvB,OAAO,CAAC,mBAAmB;CAI5B"}
@@ -6,6 +6,10 @@ export class ClientMessenger {
6
6
  constructor(windowManager) {
7
7
  this.pendingRequest = false;
8
8
  this.windowManager = windowManager;
9
+ this.initializeRpcClient();
10
+ this.setupMessageListener();
11
+ }
12
+ initializeRpcClient() {
9
13
  this.rpcClient = new JSONRPCClient((request) => {
10
14
  const walletWindow = this.windowManager.getWalletWindow();
11
15
  if (!walletWindow) {
@@ -14,6 +18,8 @@ export class ClientMessenger {
14
18
  walletWindow.postMessage(request, this.windowManager.walletUrl);
15
19
  return Promise.resolve();
16
20
  });
21
+ }
22
+ setupMessageListener() {
17
23
  window.addEventListener('message', (event) => {
18
24
  if (event.origin === this.windowManager.walletUrl && event.data?.jsonrpc === '2.0') {
19
25
  this.rpcClient.receive(event.data);
@@ -21,73 +27,97 @@ export class ClientMessenger {
21
27
  });
22
28
  }
23
29
  async sendRequest(requestMethod, requestParams) {
24
- if (this.pendingRequest && this.windowManager.getWalletWindow()?.closed === false) {
25
- const { code, message } = new ClientError(SdkErrorCode.REQUESTED_RESOURCE_NOT_AVAILABLE);
26
- return Promise.reject({ status: ResponseStatus.ERROR, code, message });
30
+ if (this.pendingRequest && !this.isWalletWindowClosed()) {
31
+ throw this.createErrorResponse(SdkErrorCode.REQUESTED_RESOURCE_NOT_AVAILABLE);
27
32
  }
28
33
  this.pendingRequest = true;
29
- this.windowManager.openOrReuseWallet();
34
+ try {
35
+ this.windowManager.openOrReuseWallet();
36
+ const walletWindow = this.ensureWalletWindow();
37
+ return await this.executeRequest(walletWindow, requestMethod, requestParams);
38
+ }
39
+ finally {
40
+ this.pendingRequest = false;
41
+ }
42
+ }
43
+ isWalletWindowClosed() {
44
+ return this.windowManager.getWalletWindow()?.closed === true;
45
+ }
46
+ ensureWalletWindow() {
30
47
  const walletWindow = this.windowManager.getWalletWindow();
31
48
  if (!walletWindow) {
32
- const { code, message } = new ClientError(SdkErrorCode.WALLET_WINDOW_UNAVAILABLE);
33
- return Promise.reject({ status: ResponseStatus.ERROR, code, message });
49
+ throw this.createErrorResponse(SdkErrorCode.WALLET_WINDOW_UNAVAILABLE);
34
50
  }
35
- let ready = false;
36
- let cleanupCalled = false;
51
+ return walletWindow;
52
+ }
53
+ async executeRequest(walletWindow, requestMethod, requestParams) {
37
54
  return new Promise((resolve, reject) => {
38
- const cleanup = () => {
39
- if (cleanupCalled)
55
+ let isResolved = false;
56
+ let timeoutId;
57
+ let intervalId;
58
+ const cleanupResources = () => {
59
+ if (isResolved)
40
60
  return;
41
- cleanupCalled = true;
42
- this.pendingRequest = false;
43
- clearTimeout(timeout);
44
- clearInterval(checkWindowClose);
45
- window.removeEventListener('message', handleReady);
46
- walletWindow.close();
61
+ isResolved = true;
62
+ clearTimeout(timeoutId);
63
+ clearInterval(intervalId);
64
+ window.removeEventListener('message', handleWalletHandshake);
47
65
  };
48
- const handleReady = (event) => {
49
- if (event.origin !== this.windowManager.walletUrl)
66
+ const handleWalletHandshake = (event) => {
67
+ if (!this.isValidReadyMessage(event))
50
68
  return;
51
- const msg = event.data;
52
- if (msg?.jsonrpc === '2.0' && msg.method === 'ready') {
53
- ready = true;
54
- window.removeEventListener('message', handleReady);
55
- Promise.resolve(this.rpcClient.request(requestMethod, requestParams))
56
- .then((result) => {
57
- cleanup();
58
- if (result.status === ResponseStatus.SUCCESS) {
59
- resolve(result);
60
- }
61
- else {
62
- reject(result);
63
- }
64
- })
65
- .catch((error) => {
66
- cleanup();
67
- const clientError = new ClientError(SdkErrorCode.UNKNOWN_ERROR, error);
68
- reject({
69
- status: ResponseStatus.ERROR,
70
- ...clientError,
71
- });
72
- });
73
- }
69
+ cleanupResources();
70
+ // Once the wallet is ready, we can send the request to the wallet
71
+ this.processRpcRequest(requestMethod, requestParams, resolve, reject);
74
72
  };
75
- const timeout = setTimeout(() => {
76
- if (!ready) {
77
- cleanup();
78
- const { code, message } = new ClientError(SdkErrorCode.WALLET_HANDSHAKE_TIMEOUT);
79
- reject({ status: ResponseStatus.ERROR, code, message });
80
- }
81
- }, UltraWalletSdkConfig.handshakeTimeout);
82
- const checkWindowClose = setInterval(() => {
83
- if (walletWindow.closed) {
84
- cleanup();
85
- const { code, message } = new ClientError(SdkErrorCode.USER_REJECTED_REQUEST);
86
- reject({ status: ResponseStatus.ERROR, code, message });
73
+ const handleTimeout = () => {
74
+ cleanupResources();
75
+ walletWindow.close();
76
+ this.rejectWithError(SdkErrorCode.WALLET_HANDSHAKE_TIMEOUT, reject);
77
+ };
78
+ const handleWindowClose = () => {
79
+ if (walletWindow.closed && !isResolved) {
80
+ cleanupResources();
81
+ this.rejectWithError(SdkErrorCode.USER_REJECTED_REQUEST, reject);
87
82
  }
88
- }, UltraWalletSdkConfig.checkWindowInterval);
89
- window.addEventListener('message', handleReady);
83
+ };
84
+ // Set up event listeners and timers
85
+ window.addEventListener('message', handleWalletHandshake);
86
+ timeoutId = setTimeout(handleTimeout, UltraWalletSdkConfig.handshakeTimeout);
87
+ intervalId = setInterval(handleWindowClose, UltraWalletSdkConfig.checkWindowInterval);
90
88
  });
91
89
  }
90
+ isValidReadyMessage(event) {
91
+ if (event.origin !== this.windowManager.walletUrl)
92
+ return false;
93
+ const msg = event.data;
94
+ return msg?.jsonrpc === '2.0' && msg.method === 'ready';
95
+ }
96
+ async processRpcRequest(requestMethod, requestParams, resolve, reject) {
97
+ try {
98
+ const result = await this.rpcClient.request(requestMethod, requestParams);
99
+ if (result.status === ResponseStatus.SUCCESS) {
100
+ resolve(result);
101
+ }
102
+ else {
103
+ reject(result);
104
+ }
105
+ }
106
+ catch (error) {
107
+ const clientError = new ClientError(SdkErrorCode.UNKNOWN_ERROR, error);
108
+ reject({
109
+ status: ResponseStatus.ERROR,
110
+ ...clientError,
111
+ });
112
+ }
113
+ }
114
+ rejectWithError(errorCode, reject) {
115
+ const errorResponse = this.createErrorResponse(errorCode);
116
+ reject(errorResponse);
117
+ }
118
+ createErrorResponse(errorCode) {
119
+ const { code, message } = new ClientError(errorCode);
120
+ return { status: ResponseStatus.ERROR, code, message, data: null };
121
+ }
92
122
  }
93
123
  //# sourceMappingURL=client-messenger.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client-messenger.js","sourceRoot":"","sources":["../../../../../../libs/wallet-sdk/src/lib/common/client-messenger.ts"],"names":[],"mappings":"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","sourcesContent":["import { JSONRPCClient } from 'json-rpc-2.0';\n\nimport UltraWalletSdkConfig from '../config/ultra-wallet-sdk.config';\nimport { JsonRpcMessage, ResponseStatus, SdkErrorCode, UltraResponse } from '../interfaces';\n\nimport { ClientError } from './client-error';\nimport { WindowManager } from './window-manager';\n\nexport class ClientMessenger {\n private windowManager: WindowManager;\n private rpcClient: JSONRPCClient;\n private pendingRequest = false;\n\n constructor(windowManager: WindowManager) {\n this.windowManager = windowManager;\n\n this.rpcClient = new JSONRPCClient((request) => {\n const walletWindow = this.windowManager.getWalletWindow();\n if (!walletWindow) {\n return Promise.reject(new ClientError(SdkErrorCode.WALLET_WINDOW_UNAVAILABLE));\n }\n walletWindow.postMessage(request, this.windowManager.walletUrl);\n return Promise.resolve();\n });\n\n window.addEventListener('message', (event) => {\n if (event.origin === this.windowManager.walletUrl && event.data?.jsonrpc === '2.0') {\n this.rpcClient.receive(event.data);\n }\n });\n }\n\n async sendRequest<T>(requestMethod: string, requestParams: object): Promise<UltraResponse<T>> {\n if (this.pendingRequest && this.windowManager.getWalletWindow()?.closed === false) {\n const { code, message } = new ClientError(SdkErrorCode.REQUESTED_RESOURCE_NOT_AVAILABLE);\n return Promise.reject({ status: ResponseStatus.ERROR, code, message });\n }\n\n this.pendingRequest = true;\n\n this.windowManager.openOrReuseWallet();\n\n const walletWindow = this.windowManager.getWalletWindow();\n if (!walletWindow) {\n const { code, message } = new ClientError(SdkErrorCode.WALLET_WINDOW_UNAVAILABLE);\n return Promise.reject({ status: ResponseStatus.ERROR, code, message });\n }\n\n let ready = false;\n let cleanupCalled = false;\n\n return new Promise<UltraResponse<T>>((resolve, reject) => {\n const cleanup = () => {\n if (cleanupCalled) return;\n cleanupCalled = true;\n this.pendingRequest = false;\n clearTimeout(timeout);\n clearInterval(checkWindowClose);\n window.removeEventListener('message', handleReady);\n walletWindow.close();\n };\n\n const handleReady = (event: MessageEvent) => {\n if (event.origin !== this.windowManager.walletUrl) return;\n const msg: JsonRpcMessage = event.data;\n if (msg?.jsonrpc === '2.0' && msg.method === 'ready') {\n ready = true;\n window.removeEventListener('message', handleReady);\n\n Promise.resolve(this.rpcClient.request(requestMethod, requestParams))\n .then((result) => {\n cleanup();\n if (result.status === ResponseStatus.SUCCESS) {\n resolve(result);\n } else {\n reject(result);\n }\n })\n .catch((error) => {\n cleanup();\n const clientError = new ClientError(SdkErrorCode.UNKNOWN_ERROR, error);\n reject({\n status: ResponseStatus.ERROR,\n ...clientError,\n });\n });\n }\n };\n\n const timeout = setTimeout(() => {\n if (!ready) {\n cleanup();\n const { code, message } = new ClientError(SdkErrorCode.WALLET_HANDSHAKE_TIMEOUT);\n reject({ status: ResponseStatus.ERROR, code, message });\n }\n }, UltraWalletSdkConfig.handshakeTimeout);\n\n const checkWindowClose = setInterval(() => {\n if (walletWindow.closed) {\n cleanup();\n const { code, message } = new ClientError(SdkErrorCode.USER_REJECTED_REQUEST);\n reject({ status: ResponseStatus.ERROR, code, message });\n }\n }, UltraWalletSdkConfig.checkWindowInterval);\n\n window.addEventListener('message', handleReady);\n });\n }\n}\n"]}
1
+ {"version":3,"file":"client-messenger.js","sourceRoot":"","sources":["../../../../../../libs/wallet-sdk/src/lib/common/client-messenger.ts"],"names":[],"mappings":"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","sourcesContent":["import { JSONRPCClient } from 'json-rpc-2.0';\n\nimport UltraWalletSdkConfig from '../config/ultra-wallet-sdk.config';\nimport { JsonRpcMessage, ResponseStatus, SdkErrorCode, UltraResponse } from '../interfaces';\n\nimport { ClientError } from './client-error';\nimport { WindowManager } from './window-manager';\n\nexport class ClientMessenger {\n private windowManager: WindowManager;\n private rpcClient: JSONRPCClient;\n private pendingRequest = false;\n\n constructor(windowManager: WindowManager) {\n this.windowManager = windowManager;\n this.initializeRpcClient();\n this.setupMessageListener();\n }\n\n private initializeRpcClient(): void {\n this.rpcClient = new JSONRPCClient((request) => {\n const walletWindow = this.windowManager.getWalletWindow();\n if (!walletWindow) {\n return Promise.reject(new ClientError(SdkErrorCode.WALLET_WINDOW_UNAVAILABLE));\n }\n walletWindow.postMessage(request, this.windowManager.walletUrl);\n return Promise.resolve();\n });\n }\n\n private setupMessageListener(): void {\n window.addEventListener('message', (event) => {\n if (event.origin === this.windowManager.walletUrl && event.data?.jsonrpc === '2.0') {\n this.rpcClient.receive(event.data);\n }\n });\n }\n\n async sendRequest<T>(requestMethod: string, requestParams: Record<string, unknown>): Promise<UltraResponse<T>> {\n if (this.pendingRequest && !this.isWalletWindowClosed()) {\n throw this.createErrorResponse(SdkErrorCode.REQUESTED_RESOURCE_NOT_AVAILABLE);\n }\n\n this.pendingRequest = true;\n\n try {\n this.windowManager.openOrReuseWallet();\n const walletWindow = this.ensureWalletWindow();\n\n return await this.executeRequest<T>(walletWindow, requestMethod, requestParams);\n } finally {\n this.pendingRequest = false;\n }\n }\n\n private isWalletWindowClosed(): boolean {\n return this.windowManager.getWalletWindow()?.closed === true;\n }\n\n private ensureWalletWindow(): Window {\n const walletWindow = this.windowManager.getWalletWindow();\n if (!walletWindow) {\n throw this.createErrorResponse(SdkErrorCode.WALLET_WINDOW_UNAVAILABLE);\n }\n return walletWindow;\n }\n\n private async executeRequest<T>(\n walletWindow: Window,\n requestMethod: string,\n requestParams: Record<string, unknown>,\n ): Promise<UltraResponse<T>> {\n return new Promise<UltraResponse<T>>((resolve, reject) => {\n let isResolved = false;\n let timeoutId: any;\n let intervalId: any;\n\n const cleanupResources = () => {\n if (isResolved) return;\n isResolved = true;\n\n clearTimeout(timeoutId);\n clearInterval(intervalId);\n window.removeEventListener('message', handleWalletHandshake);\n };\n\n const handleWalletHandshake = (event: MessageEvent) => {\n if (!this.isValidReadyMessage(event)) return;\n\n cleanupResources();\n\n // Once the wallet is ready, we can send the request to the wallet\n this.processRpcRequest<T>(requestMethod, requestParams, resolve, reject);\n };\n\n const handleTimeout = () => {\n cleanupResources();\n walletWindow.close();\n this.rejectWithError(SdkErrorCode.WALLET_HANDSHAKE_TIMEOUT, reject);\n };\n\n const handleWindowClose = () => {\n if (walletWindow.closed && !isResolved) {\n cleanupResources();\n this.rejectWithError(SdkErrorCode.USER_REJECTED_REQUEST, reject);\n }\n };\n\n // Set up event listeners and timers\n window.addEventListener('message', handleWalletHandshake);\n timeoutId = setTimeout(handleTimeout, UltraWalletSdkConfig.handshakeTimeout);\n intervalId = setInterval(handleWindowClose, UltraWalletSdkConfig.checkWindowInterval);\n });\n }\n\n private isValidReadyMessage(event: MessageEvent): boolean {\n if (event.origin !== this.windowManager.walletUrl) return false;\n\n const msg: JsonRpcMessage = event.data;\n return msg?.jsonrpc === '2.0' && msg.method === 'ready';\n }\n\n private async processRpcRequest<T>(\n requestMethod: string,\n requestParams: Record<string, unknown>,\n resolve: (value: UltraResponse<T>) => void,\n reject: (reason: any) => void,\n ): Promise<void> {\n try {\n const result = await this.rpcClient.request(requestMethod, requestParams);\n\n if (result.status === ResponseStatus.SUCCESS) {\n resolve(result);\n } else {\n reject(result);\n }\n } catch (error) {\n const clientError = new ClientError(SdkErrorCode.UNKNOWN_ERROR, error);\n reject({\n status: ResponseStatus.ERROR,\n ...clientError,\n });\n }\n }\n\n private rejectWithError(errorCode: SdkErrorCode, reject: (reason: any) => void): void {\n const errorResponse = this.createErrorResponse(errorCode);\n reject(errorResponse);\n }\n\n private createErrorResponse(errorCode: SdkErrorCode): UltraResponse<never> {\n const { code, message } = new ClientError(errorCode);\n return { status: ResponseStatus.ERROR, code, message, data: null as never };\n }\n}\n"]}
@@ -11,7 +11,7 @@ export class WindowManager {
11
11
  const width = UltraWalletSdkConfig.width;
12
12
  const top = this.currentWindow.top;
13
13
  const left = this.currentWindow.screenLeft + this.currentWindow.innerWidth - width;
14
- this.walletWindow = window.open(this.walletUrl, '_blank', `width=${width},height=${height},top=${top},left=${left}`);
14
+ this.walletWindow = window.open(this.walletUrl, '_blank', `width=${width},height=${height},top=${top},left=${left},resizable=0`);
15
15
  }
16
16
  else {
17
17
  this.walletWindow.focus();
@@ -1 +1 @@
1
- {"version":3,"file":"window-manager.js","sourceRoot":"","sources":["../../../../../../libs/wallet-sdk/src/lib/common/window-manager.ts"],"names":[],"mappings":"AAAA,OAAO,oBAAoB,MAAM,mCAAmC,CAAC;AAErE,MAAM,OAAO,aAAa;IAKxB,YAAY,SAAiB;QAHrB,iBAAY,GAAkB,IAAI,CAAC;QAIzC,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;QAC5B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,iBAAiB;QACf,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;YAC1D,MAAM,MAAM,GAAG,oBAAoB,CAAC,MAAM,CAAC;YAC3C,MAAM,KAAK,GAAG,oBAAoB,CAAC,KAAK,CAAC;YACzC,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;YACnC,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,GAAG,KAAK,CAAC;YAEnF,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,IAAI,CAC7B,IAAI,CAAC,SAAS,EACd,QAAQ,EACR,SAAS,KAAK,WAAW,MAAM,QAAQ,GAAG,SAAS,IAAI,EAAE,CAC1D,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,4CAA4C;IAC5C,eAAe;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;CACF","sourcesContent":["import UltraWalletSdkConfig from '../config/ultra-wallet-sdk.config';\n\nexport class WindowManager {\n private currentWindow: Window;\n private walletWindow: Window | null = null;\n public readonly walletUrl: string;\n\n constructor(walletUrl: string) {\n this.currentWindow = window;\n this.walletUrl = walletUrl;\n }\n\n openOrReuseWallet() {\n if (this.walletWindow == null || this.walletWindow.closed) {\n const height = UltraWalletSdkConfig.height;\n const width = UltraWalletSdkConfig.width;\n const top = this.currentWindow.top;\n const left = this.currentWindow.screenLeft + this.currentWindow.innerWidth - width;\n\n this.walletWindow = window.open(\n this.walletUrl,\n '_blank',\n `width=${width},height=${height},top=${top},left=${left}`,\n );\n } else {\n this.walletWindow.focus();\n }\n }\n\n // Provides a reference to the wallet window\n getWalletWindow(): Window | null {\n return this.walletWindow;\n }\n}\n"]}
1
+ {"version":3,"file":"window-manager.js","sourceRoot":"","sources":["../../../../../../libs/wallet-sdk/src/lib/common/window-manager.ts"],"names":[],"mappings":"AAAA,OAAO,oBAAoB,MAAM,mCAAmC,CAAC;AAErE,MAAM,OAAO,aAAa;IAKxB,YAAY,SAAiB;QAHrB,iBAAY,GAAkB,IAAI,CAAC;QAIzC,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;QAC5B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,iBAAiB;QACf,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;YAC1D,MAAM,MAAM,GAAG,oBAAoB,CAAC,MAAM,CAAC;YAC3C,MAAM,KAAK,GAAG,oBAAoB,CAAC,KAAK,CAAC;YACzC,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;YACnC,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,GAAG,KAAK,CAAC;YAEnF,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,IAAI,CAC7B,IAAI,CAAC,SAAS,EACd,QAAQ,EACR,SAAS,KAAK,WAAW,MAAM,QAAQ,GAAG,SAAS,IAAI,cAAc,CACtE,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,4CAA4C;IAC5C,eAAe;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;CACF","sourcesContent":["import UltraWalletSdkConfig from '../config/ultra-wallet-sdk.config';\n\nexport class WindowManager {\n private currentWindow: Window;\n private walletWindow: Window | null = null;\n public readonly walletUrl: string;\n\n constructor(walletUrl: string) {\n this.currentWindow = window;\n this.walletUrl = walletUrl;\n }\n\n openOrReuseWallet() {\n if (this.walletWindow == null || this.walletWindow.closed) {\n const height = UltraWalletSdkConfig.height;\n const width = UltraWalletSdkConfig.width;\n const top = this.currentWindow.top;\n const left = this.currentWindow.screenLeft + this.currentWindow.innerWidth - width;\n\n this.walletWindow = window.open(\n this.walletUrl,\n '_blank',\n `width=${width},height=${height},top=${top},left=${left},resizable=0`,\n );\n } else {\n this.walletWindow.focus();\n }\n }\n\n // Provides a reference to the wallet window\n getWalletWindow(): Window | null {\n return this.walletWindow;\n }\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  const UltraWalletSdkConfig = Object.freeze({
2
- width: 345,
3
- height: 610,
2
+ width: 420,
3
+ height: 815,
4
4
  walletUrls: {
5
5
  mainnet: 'https://web-wallet.ultra.io',
6
6
  testnet: 'https://web-wallet.staging.ultra.io',
@@ -1 +1 @@
1
- {"version":3,"file":"ultra-wallet-sdk.config.js","sourceRoot":"","sources":["../../../../../../libs/wallet-sdk/src/lib/config/ultra-wallet-sdk.config.ts"],"names":[],"mappings":"AAiBA,MAAM,oBAAoB,GAAyB,MAAM,CAAC,MAAM,CAAC;IAC/D,KAAK,EAAE,GAAG;IACV,MAAM,EAAE,GAAG;IACX,UAAU,EAAE;QACV,OAAO,EAAE,6BAA6B;QACtC,OAAO,EAAE,qCAAqC;KAC/C;IACD,WAAW,EAAE;QACX,OAAO,EAAE;YACP,OAAO,EAAE,kEAAkE;SAC5E;QACD,OAAO,EAAE;YACP,OAAO,EAAE,kEAAkE;SAC5E;KACF;IACD,mBAAmB,EAAE,GAAG;IACxB,gBAAgB,EAAE,KAAM;CACzB,CAAC,CAAC;AAEH,eAAe,oBAAoB,CAAC","sourcesContent":["interface UltraWalletSdkConfig {\n width: number;\n height: number;\n walletUrls: {\n mainnet: string;\n testnet: string;\n };\n checkWindowInterval: number;\n handshakeTimeout: number;\n networkInfo: Record<\n 'mainnet' | 'testnet',\n {\n chainId: string;\n }\n >;\n}\n\nconst UltraWalletSdkConfig: UltraWalletSdkConfig = Object.freeze({\n width: 345,\n height: 610,\n walletUrls: {\n mainnet: 'https://web-wallet.ultra.io',\n testnet: 'https://web-wallet.staging.ultra.io',\n },\n networkInfo: {\n mainnet: {\n chainId: 'a9c481dfbc7d9506dc7e87e9a137c931b0a9303f64fd7a1d08b8230133920097',\n },\n testnet: {\n chainId: '7fc56be645bb76ab9d747b53089f132dcb7681db06f0852cfa03eaf6f7ac80e9',\n },\n },\n checkWindowInterval: 500,\n handshakeTimeout: 10_000,\n});\n\nexport default UltraWalletSdkConfig;\n"]}
1
+ {"version":3,"file":"ultra-wallet-sdk.config.js","sourceRoot":"","sources":["../../../../../../libs/wallet-sdk/src/lib/config/ultra-wallet-sdk.config.ts"],"names":[],"mappings":"AAiBA,MAAM,oBAAoB,GAAyB,MAAM,CAAC,MAAM,CAAC;IAC/D,KAAK,EAAE,GAAG;IACV,MAAM,EAAE,GAAG;IACX,UAAU,EAAE;QACV,OAAO,EAAE,6BAA6B;QACtC,OAAO,EAAE,qCAAqC;KAC/C;IACD,WAAW,EAAE;QACX,OAAO,EAAE;YACP,OAAO,EAAE,kEAAkE;SAC5E;QACD,OAAO,EAAE;YACP,OAAO,EAAE,kEAAkE;SAC5E;KACF;IACD,mBAAmB,EAAE,GAAG;IACxB,gBAAgB,EAAE,KAAM;CACzB,CAAC,CAAC;AAEH,eAAe,oBAAoB,CAAC","sourcesContent":["interface UltraWalletSdkConfig {\n width: number;\n height: number;\n walletUrls: {\n mainnet: string;\n testnet: string;\n };\n checkWindowInterval: number;\n handshakeTimeout: number;\n networkInfo: Record<\n 'mainnet' | 'testnet',\n {\n chainId: string;\n }\n >;\n}\n\nconst UltraWalletSdkConfig: UltraWalletSdkConfig = Object.freeze({\n width: 420,\n height: 815,\n walletUrls: {\n mainnet: 'https://web-wallet.ultra.io',\n testnet: 'https://web-wallet.staging.ultra.io',\n },\n networkInfo: {\n mainnet: {\n chainId: 'a9c481dfbc7d9506dc7e87e9a137c931b0a9303f64fd7a1d08b8230133920097',\n },\n testnet: {\n chainId: '7fc56be645bb76ab9d747b53089f132dcb7681db06f0852cfa03eaf6f7ac80e9',\n },\n },\n checkWindowInterval: 500,\n handshakeTimeout: 10_000,\n});\n\nexport default UltraWalletSdkConfig;\n"]}
@@ -19,4 +19,10 @@ export interface BlockchainTransaction {
19
19
  */
20
20
  authorizations?: string[];
21
21
  }
22
+ export interface SignTransactionOptions {
23
+ /**
24
+ * If true, only sign the transaction, don't broadcast it
25
+ */
26
+ signOnly?: boolean;
27
+ }
22
28
  //# sourceMappingURL=blockchain-transaction.interface.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"blockchain-transaction.interface.d.ts","sourceRoot":"","sources":["../../../../../../libs/wallet-sdk/src/lib/interfaces/blockchain-transaction.interface.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,IAAI,EAAE,GAAG,CAAC;IACV;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B"}
1
+ {"version":3,"file":"blockchain-transaction.interface.d.ts","sourceRoot":"","sources":["../../../../../../libs/wallet-sdk/src/lib/interfaces/blockchain-transaction.interface.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,IAAI,EAAE,GAAG,CAAC;IACV;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,sBAAsB;IACrC;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB"}
@@ -1 +1 @@
1
- {"version":3,"file":"blockchain-transaction.interface.js","sourceRoot":"","sources":["../../../../../../libs/wallet-sdk/src/lib/interfaces/blockchain-transaction.interface.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * Defines the structure of a blockchain transaction request to be signed by the Ultra Wallet.\n */\nexport interface BlockchainTransaction {\n /**\n * The smart contract address or name to interact with.\n */\n contract: string;\n /**\n * The action or method to call on the contract.\n */\n action: string;\n /**\n * The data payload for the contract action.\n */\n data: any;\n /**\n * List of authorizations (account@permission) required for the transaction.\n */\n authorizations?: string[];\n}\n"]}
1
+ {"version":3,"file":"blockchain-transaction.interface.js","sourceRoot":"","sources":["../../../../../../libs/wallet-sdk/src/lib/interfaces/blockchain-transaction.interface.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * Defines the structure of a blockchain transaction request to be signed by the Ultra Wallet.\n */\nexport interface BlockchainTransaction {\n /**\n * The smart contract address or name to interact with.\n */\n contract: string;\n /**\n * The action or method to call on the contract.\n */\n action: string;\n /**\n * The data payload for the contract action.\n */\n data: any;\n /**\n * List of authorizations (account@permission) required for the transaction.\n */\n authorizations?: string[];\n}\n\nexport interface SignTransactionOptions {\n /**\n * If true, only sign the transaction, don't broadcast it\n */\n signOnly?: boolean;\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { BlockchainTransaction } from './blockchain-transaction.interface';
1
+ import { BlockchainTransaction, SignTransactionOptions } from './blockchain-transaction.interface';
2
2
  import { ConnectParams } from './connect-params.interface';
3
3
  import { PurchaseItemType } from './purchase-item.interface';
4
4
  import { ConnectResult, DisconnectResponse, PurchaseItemResult, SignMessageResult, SignTransactionResult, UltraResponse } from './wallet-provider-response.interface';
@@ -25,8 +25,9 @@ export interface UltraWalletProvider {
25
25
  /**
26
26
  * Open a popup to sign a transaction
27
27
  * @param transaction - The transaction to sign
28
+ * @param options - The options for the transaction
28
29
  */
29
- signTransaction(transaction: BlockchainTransaction | BlockchainTransaction[]): Promise<UltraResponse<SignTransactionResult>>;
30
+ signTransaction(transaction: BlockchainTransaction | BlockchainTransaction[], options?: SignTransactionOptions): Promise<UltraResponse<SignTransactionResult>>;
30
31
  /**
31
32
  * Get current chain id
32
33
  */
@@ -1 +1 @@
1
- {"version":3,"file":"wallet-provider.interface.d.ts","sourceRoot":"","sources":["../../../../../../libs/wallet-sdk/src/lib/interfaces/wallet-provider.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACrB,aAAa,EACd,MAAM,sCAAsC,CAAC;AAE9C;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC;IAEvE;;OAEG;IACH,UAAU,IAAI,OAAO,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAEzD;;;OAGG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAExE;;;OAGG;IACH,eAAe,CACb,WAAW,EAAE,qBAAqB,GAAG,qBAAqB,EAAE,GAC3D,OAAO,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAEjD;;OAEG;IACH,UAAU,IAAI,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;IAE7C;;;;OAIG;IACH,YAAY,CAAC,QAAQ,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC,CAAC;CACtG"}
1
+ {"version":3,"file":"wallet-provider.interface.d.ts","sourceRoot":"","sources":["../../../../../../libs/wallet-sdk/src/lib/interfaces/wallet-provider.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AACnG,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACrB,aAAa,EACd,MAAM,sCAAsC,CAAC;AAE9C;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC;IAEvE;;OAEG;IACH,UAAU,IAAI,OAAO,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAEzD;;;OAGG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAExE;;;;OAIG;IACH,eAAe,CACb,WAAW,EAAE,qBAAqB,GAAG,qBAAqB,EAAE,EAC5D,OAAO,CAAC,EAAE,sBAAsB,GAC/B,OAAO,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAEjD;;OAEG;IACH,UAAU,IAAI,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;IAE7C;;;;OAIG;IACH,YAAY,CAAC,QAAQ,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC,CAAC;CACtG"}
@@ -1 +1 @@
1
- {"version":3,"file":"wallet-provider.interface.js","sourceRoot":"","sources":["../../../../../../libs/wallet-sdk/src/lib/interfaces/wallet-provider.interface.ts"],"names":[],"mappings":"","sourcesContent":["import { BlockchainTransaction } from './blockchain-transaction.interface';\nimport { ConnectParams } from './connect-params.interface';\nimport { PurchaseItemType } from './purchase-item.interface';\nimport {\n ConnectResult,\n DisconnectResponse,\n PurchaseItemResult,\n SignMessageResult,\n SignTransactionResult,\n UltraResponse,\n} from './wallet-provider-response.interface';\n\n/**\n * Defines the minimal interface that a wallet provider must implement for the Ultra Wallet SDK.\n */\nexport interface UltraWalletProvider {\n /**\n * Prompt the user for permission to share his wallet info with the 3rd party application.\n * Once permission is established the first time, the 3rd party application will be whitelisted for future requests.\n * @param params.onlyIfTrusted - Do not prompt the user for permissions. Share current account info if Dapp is already trusted,\n * otherwise rejects the request.\n */\n connect(params?: ConnectParams): Promise<UltraResponse<ConnectResult>>;\n\n /**\n * Remove permission to interact with the 3rd party application\n */\n disconnect(): Promise<UltraResponse<DisconnectResponse>>;\n\n /**\n * Open a popup to sign a message\n * @param message - The message to sign. The message should be prefixed with \"0x:, UOSx:, or message:\"\n */\n signMessage(message: string): Promise<UltraResponse<SignMessageResult>>;\n\n /**\n * Open a popup to sign a transaction\n * @param transaction - The transaction to sign\n */\n signTransaction(\n transaction: BlockchainTransaction | BlockchainTransaction[],\n ): Promise<UltraResponse<SignTransactionResult>>;\n\n /**\n * Get current chain id\n */\n getChainId(): Promise<UltraResponse<string>>;\n\n /**\n * Open a popup to purchase an item\n * @param {PurchaseItemType} itemType - The type of item to purchase\n * @param {string} itemId - The id of the item to purchase\n */\n purchaseItem(itemType: PurchaseItemType, itemId: string): Promise<UltraResponse<PurchaseItemResult>>;\n}\n"]}
1
+ {"version":3,"file":"wallet-provider.interface.js","sourceRoot":"","sources":["../../../../../../libs/wallet-sdk/src/lib/interfaces/wallet-provider.interface.ts"],"names":[],"mappings":"","sourcesContent":["import { BlockchainTransaction, SignTransactionOptions } from './blockchain-transaction.interface';\nimport { ConnectParams } from './connect-params.interface';\nimport { PurchaseItemType } from './purchase-item.interface';\nimport {\n ConnectResult,\n DisconnectResponse,\n PurchaseItemResult,\n SignMessageResult,\n SignTransactionResult,\n UltraResponse,\n} from './wallet-provider-response.interface';\n\n/**\n * Defines the minimal interface that a wallet provider must implement for the Ultra Wallet SDK.\n */\nexport interface UltraWalletProvider {\n /**\n * Prompt the user for permission to share his wallet info with the 3rd party application.\n * Once permission is established the first time, the 3rd party application will be whitelisted for future requests.\n * @param params.onlyIfTrusted - Do not prompt the user for permissions. Share current account info if Dapp is already trusted,\n * otherwise rejects the request.\n */\n connect(params?: ConnectParams): Promise<UltraResponse<ConnectResult>>;\n\n /**\n * Remove permission to interact with the 3rd party application\n */\n disconnect(): Promise<UltraResponse<DisconnectResponse>>;\n\n /**\n * Open a popup to sign a message\n * @param message - The message to sign. The message should be prefixed with \"0x:, UOSx:, or message:\"\n */\n signMessage(message: string): Promise<UltraResponse<SignMessageResult>>;\n\n /**\n * Open a popup to sign a transaction\n * @param transaction - The transaction to sign\n * @param options - The options for the transaction\n */\n signTransaction(\n transaction: BlockchainTransaction | BlockchainTransaction[],\n options?: SignTransactionOptions,\n ): Promise<UltraResponse<SignTransactionResult>>;\n\n /**\n * Get current chain id\n */\n getChainId(): Promise<UltraResponse<string>>;\n\n /**\n * Open a popup to purchase an item\n * @param {PurchaseItemType} itemType - The type of item to purchase\n * @param {string} itemId - The id of the item to purchase\n */\n purchaseItem(itemType: PurchaseItemType, itemId: string): Promise<UltraResponse<PurchaseItemResult>>;\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { BlockchainTransaction, ConnectParams, ConnectResult, PurchaseItemResult, PurchaseItemType, SignMessageResult, SignTransactionResult, UltraResponse, UltraWalletProvider, UltraWalletSdkOptions } from '../../interfaces';
1
+ import { BlockchainTransaction, ConnectParams, ConnectResult, PurchaseItemResult, PurchaseItemType, SignMessageResult, SignTransactionOptions, SignTransactionResult, UltraResponse, UltraWalletProvider, UltraWalletSdkOptions } from '../../interfaces';
2
2
  declare global {
3
3
  interface Window {
4
4
  ultra: UltraWalletProvider;
@@ -10,7 +10,7 @@ export declare class ExtensionProvider implements UltraWalletProvider {
10
10
  connect(params?: ConnectParams): Promise<UltraResponse<ConnectResult>>;
11
11
  disconnect(): Promise<UltraResponse<boolean>>;
12
12
  signMessage(message: string): Promise<UltraResponse<SignMessageResult>>;
13
- signTransaction(transaction: BlockchainTransaction | BlockchainTransaction[]): Promise<UltraResponse<SignTransactionResult>>;
13
+ signTransaction(transaction: BlockchainTransaction | BlockchainTransaction[], options?: SignTransactionOptions): Promise<UltraResponse<SignTransactionResult>>;
14
14
  getChainId(): Promise<UltraResponse<string>>;
15
15
  purchaseItem(itemType: PurchaseItemType, itemId: string): Promise<UltraResponse<PurchaseItemResult>>;
16
16
  }
@@ -1 +1 @@
1
- {"version":3,"file":"extension.provider.d.ts","sourceRoot":"","sources":["../../../../../../../libs/wallet-sdk/src/lib/providers/extension-provider/extension.provider.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,aAAa,EACb,mBAAmB,EACnB,qBAAqB,EACtB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,KAAK,EAAE,mBAAmB,CAAC;KAC5B;CACF;AAED,qBAAa,iBAAkB,YAAW,mBAAmB;IAC/C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAAR,OAAO,CAAC,EAAE,qBAAqB;IAEtD,OAAO,CAAC,MAAM,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;IAU5E,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,GAC3D,OAAO,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC;IAIhD,UAAU,IAAI,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAI5C,YAAY,CAAC,QAAQ,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;CAGrG"}
1
+ {"version":3,"file":"extension.provider.d.ts","sourceRoot":"","sources":["../../../../../../../libs/wallet-sdk/src/lib/providers/extension-provider/extension.provider.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,EACtB,qBAAqB,EACrB,aAAa,EACb,mBAAmB,EACnB,qBAAqB,EACtB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,KAAK,EAAE,mBAAmB,CAAC;KAC5B;CACF;AAED,qBAAa,iBAAkB,YAAW,mBAAmB;IAC/C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAAR,OAAO,CAAC,EAAE,qBAAqB;IAEtD,OAAO,CAAC,MAAM,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;IAU5E,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,YAAY,CAAC,QAAQ,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;CAGrG"}
@@ -16,8 +16,8 @@ export class ExtensionProvider {
16
16
  signMessage(message) {
17
17
  return window.ultra.signMessage(message);
18
18
  }
19
- signTransaction(transaction) {
20
- return window.ultra.signTransaction(transaction);
19
+ signTransaction(transaction, options) {
20
+ return window.ultra.signTransaction(transaction, options);
21
21
  }
22
22
  getChainId() {
23
23
  return window.ultra.getChainId();
@@ -1 +1 @@
1
- {"version":3,"file":"extension.provider.js","sourceRoot":"","sources":["../../../../../../../libs/wallet-sdk/src/lib/providers/extension-provider/extension.provider.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAQ3D,MAAM,OAAO,iBAAiB;IAC5B,YAA6B,OAA+B;QAA/B,YAAO,GAAP,OAAO,CAAwB;IAAG,CAAC;IAEhE,KAAK,CAAC,OAAO,CAAC,MAAsB;QAClC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;QAC1D,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,CAAC;YACtD,MAAM,IAAI,KAAK,CACb,0CAA0C,IAAI,CAAC,OAAO,EAAE,WAAW,0BAA0B,OAAO,mEAAmE,CACxK,CAAC;QACJ,CAAC;QACD,OAAO,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IAED,UAAU;QACR,OAAO,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;IACnC,CAAC;IAED,WAAW,CAAC,OAAe;QACzB,OAAO,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,eAAe,CACb,WAA4D;QAE5D,OAAO,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;IACnD,CAAC;IAED,UAAU;QACR,OAAO,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;IACnC,CAAC;IAED,YAAY,CAAC,QAA0B,EAAE,MAAc;QACrD,OAAO,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACrD,CAAC;CACF","sourcesContent":["import {\n BlockchainTransaction,\n ConnectParams,\n ConnectResult,\n PurchaseItemResult,\n PurchaseItemType,\n SignMessageResult,\n SignTransactionResult,\n UltraResponse,\n UltraWalletProvider,\n UltraWalletSdkOptions,\n} from '../../interfaces';\nimport { isValidChain } from '../../utils/chain-validator';\n\ndeclare global {\n interface Window {\n ultra: UltraWalletProvider;\n }\n}\n\nexport class ExtensionProvider implements UltraWalletProvider {\n constructor(private readonly options?: UltraWalletSdkOptions) {}\n\n async connect(params?: ConnectParams): Promise<UltraResponse<ConnectResult>> {\n const { data: chainId } = await window.ultra.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 return window.ultra.connect(params);\n }\n\n disconnect(): Promise<UltraResponse<boolean>> {\n return window.ultra.disconnect();\n }\n\n signMessage(message: string): Promise<UltraResponse<SignMessageResult>> {\n return window.ultra.signMessage(message);\n }\n\n signTransaction(\n transaction: BlockchainTransaction | BlockchainTransaction[],\n ): Promise<UltraResponse<SignTransactionResult>> {\n return window.ultra.signTransaction(transaction);\n }\n\n getChainId(): Promise<UltraResponse<string>> {\n return window.ultra.getChainId();\n }\n\n purchaseItem(itemType: PurchaseItemType, itemId: string): Promise<UltraResponse<PurchaseItemResult>> {\n return window.ultra.purchaseItem(itemType, itemId);\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":"AAaA,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAQ3D,MAAM,OAAO,iBAAiB;IAC5B,YAA6B,OAA+B;QAA/B,YAAO,GAAP,OAAO,CAAwB;IAAG,CAAC;IAEhE,KAAK,CAAC,OAAO,CAAC,MAAsB;QAClC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;QAC1D,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,CAAC;YACtD,MAAM,IAAI,KAAK,CACb,0CAA0C,IAAI,CAAC,OAAO,EAAE,WAAW,0BAA0B,OAAO,mEAAmE,CACxK,CAAC;QACJ,CAAC;QACD,OAAO,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IAED,UAAU;QACR,OAAO,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;IACnC,CAAC;IAED,WAAW,CAAC,OAAe;QACzB,OAAO,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,eAAe,CACb,WAA4D,EAC5D,OAAgC;QAEhC,OAAO,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC5D,CAAC;IAED,UAAU;QACR,OAAO,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;IACnC,CAAC;IAED,YAAY,CAAC,QAA0B,EAAE,MAAc;QACrD,OAAO,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACrD,CAAC;CACF","sourcesContent":["import {\n BlockchainTransaction,\n ConnectParams,\n ConnectResult,\n PurchaseItemResult,\n PurchaseItemType,\n SignMessageResult,\n SignTransactionOptions,\n SignTransactionResult,\n UltraResponse,\n UltraWalletProvider,\n UltraWalletSdkOptions,\n} from '../../interfaces';\nimport { isValidChain } from '../../utils/chain-validator';\n\ndeclare global {\n interface Window {\n ultra: UltraWalletProvider;\n }\n}\n\nexport class ExtensionProvider implements UltraWalletProvider {\n constructor(private readonly options?: UltraWalletSdkOptions) {}\n\n async connect(params?: ConnectParams): Promise<UltraResponse<ConnectResult>> {\n const { data: chainId } = await window.ultra.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 return window.ultra.connect(params);\n }\n\n disconnect(): Promise<UltraResponse<boolean>> {\n return window.ultra.disconnect();\n }\n\n signMessage(message: string): Promise<UltraResponse<SignMessageResult>> {\n return window.ultra.signMessage(message);\n }\n\n signTransaction(\n transaction: BlockchainTransaction | BlockchainTransaction[],\n options?: SignTransactionOptions,\n ): Promise<UltraResponse<SignTransactionResult>> {\n return window.ultra.signTransaction(transaction, options);\n }\n\n getChainId(): Promise<UltraResponse<string>> {\n return window.ultra.getChainId();\n }\n\n purchaseItem(itemType: PurchaseItemType, itemId: string): Promise<UltraResponse<PurchaseItemResult>> {\n return window.ultra.purchaseItem(itemType, itemId);\n }\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { BlockchainTransaction, ConnectParams, ConnectResult, PurchaseItemResult, PurchaseItemType, SignMessageResult, SignTransactionResult, UltraResponse, UltraWalletProvider, UltraWalletSdkOptions } from '../../interfaces';
1
+ import { BlockchainTransaction, ConnectParams, ConnectResult, PurchaseItemResult, PurchaseItemType, SignMessageResult, SignTransactionOptions, SignTransactionResult, UltraResponse, UltraWalletProvider, UltraWalletSdkOptions } from '../../interfaces';
2
2
  export declare class WebProvider implements UltraWalletProvider {
3
3
  private readonly options?;
4
4
  private readonly windowManager;
@@ -7,7 +7,7 @@ export declare class WebProvider implements UltraWalletProvider {
7
7
  connect(_?: ConnectParams): Promise<UltraResponse<ConnectResult>>;
8
8
  disconnect(): Promise<UltraResponse<boolean>>;
9
9
  signMessage(message: string): Promise<UltraResponse<SignMessageResult>>;
10
- signTransaction(transaction: BlockchainTransaction | BlockchainTransaction[]): Promise<UltraResponse<SignTransactionResult>>;
10
+ signTransaction(transaction: BlockchainTransaction | BlockchainTransaction[], options?: SignTransactionOptions): Promise<UltraResponse<SignTransactionResult>>;
11
11
  getChainId(): Promise<UltraResponse<string>>;
12
12
  purchaseItem(itemType: PurchaseItemType, itemId: string): Promise<UltraResponse<PurchaseItemResult>>;
13
13
  private resolveWalletUrl;
@@ -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,qBAAqB,EACrB,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,aAAa,EACb,mBAAmB,EACnB,qBAAqB,EACtB,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,CAAC,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;IAIjE,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,GAC3D,OAAO,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC;IAIhD,UAAU,IAAI,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAI5C,YAAY,CAAC,QAAQ,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;IAOpG,OAAO,CAAC,gBAAgB;CAIzB"}
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,qBAAqB,EACrB,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,gBAAgB,EAEhB,iBAAiB,EACjB,sBAAsB,EACtB,qBAAqB,EACrB,aAAa,EACb,mBAAmB,EACnB,qBAAqB,EACtB,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,CAAC,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;IAIjE,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,YAAY,CAAC,QAAQ,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;IAOpG,OAAO,CAAC,gBAAgB;CAIzB"}
@@ -1,6 +1,7 @@
1
1
  import { ClientMessenger } from '../../common/client-messenger';
2
2
  import { WindowManager } from '../../common/window-manager';
3
3
  import UltraWalletSdkConfig from '../../config/ultra-wallet-sdk.config';
4
+ import { ResponseStatus, } from '../../interfaces';
4
5
  export class WebProvider {
5
6
  constructor(options) {
6
7
  this.options = options;
@@ -16,11 +17,27 @@ export class WebProvider {
16
17
  signMessage(message) {
17
18
  return this.clientMessenger.sendRequest('signMessage', { message });
18
19
  }
19
- signTransaction(transaction) {
20
- return this.clientMessenger.sendRequest('signTransaction', { transaction });
21
- }
22
- getChainId() {
23
- return this.clientMessenger.sendRequest('getChainId', {});
20
+ signTransaction(transaction, options) {
21
+ return this.clientMessenger.sendRequest('signTransaction', { transaction, options });
22
+ }
23
+ async getChainId() {
24
+ const environment = this.options?.environment || 'mainnet';
25
+ switch (environment) {
26
+ case 'mainnet':
27
+ const mainnetChainId = UltraWalletSdkConfig.networkInfo.mainnet.chainId;
28
+ return {
29
+ status: ResponseStatus.SUCCESS,
30
+ data: mainnetChainId,
31
+ };
32
+ case 'testnet':
33
+ const testnetChainId = UltraWalletSdkConfig.networkInfo.testnet.chainId;
34
+ return {
35
+ status: ResponseStatus.SUCCESS,
36
+ data: testnetChainId,
37
+ };
38
+ default:
39
+ return this.clientMessenger.sendRequest('getChainId', {});
40
+ }
24
41
  }
25
42
  purchaseItem(itemType, itemId) {
26
43
  return this.clientMessenger.sendRequest('purchaseItem', {
@@ -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,MAAM,OAAO,WAAW;IAItB,YAA6B,OAA+B;QAA/B,YAAO,GAAP,OAAO,CAAwB;QAC1D,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;QAChE,IAAI,CAAC,eAAe,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACjE,CAAC;IAED,OAAO,CAAC,CAAiB;QACvB,OAAO,IAAI,CAAC,eAAe,CAAC,WAAW,CAAgB,SAAS,EAAE,EAAE,CAAC,CAAC;IACxE,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,eAAe,CAAC,WAAW,CAAU,YAAY,EAAE,EAAE,CAAC,CAAC;IACrE,CAAC;IAED,WAAW,CAAC,OAAe;QACzB,OAAO,IAAI,CAAC,eAAe,CAAC,WAAW,CAAoB,aAAa,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IACzF,CAAC;IAED,eAAe,CACb,WAA4D;QAE5D,OAAO,IAAI,CAAC,eAAe,CAAC,WAAW,CAAwB,iBAAiB,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;IACrG,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,eAAe,CAAC,WAAW,CAAS,YAAY,EAAE,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,YAAY,CAAC,QAA0B,EAAE,MAAc;QACrD,OAAO,IAAI,CAAC,eAAe,CAAC,WAAW,CAAqB,cAAc,EAAE;YAC1E,QAAQ;YACR,MAAM;SACP,CAAC,CAAC;IACL,CAAC;IAEO,gBAAgB;QACtB,MAAM,GAAG,GAAG,oBAAoB,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,IAAI,SAAS,CAAC,CAAC;QACpF,OAAO,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;IACzC,CAAC;CACF","sourcesContent":["import { ClientMessenger } from '../../common/client-messenger';\nimport { WindowManager } from '../../common/window-manager';\nimport UltraWalletSdkConfig from '../../config/ultra-wallet-sdk.config';\nimport {\n BlockchainTransaction,\n ConnectParams,\n ConnectResult,\n PurchaseItemResult,\n PurchaseItemType,\n SignMessageResult,\n SignTransactionResult,\n UltraResponse,\n UltraWalletProvider,\n UltraWalletSdkOptions,\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(_?: ConnectParams): Promise<UltraResponse<ConnectResult>> {\n return this.clientMessenger.sendRequest<ConnectResult>('connect', {});\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 ): Promise<UltraResponse<SignTransactionResult>> {\n return this.clientMessenger.sendRequest<SignTransactionResult>('signTransaction', { transaction });\n }\n\n getChainId(): Promise<UltraResponse<string>> {\n return this.clientMessenger.sendRequest<string>('getChainId', {});\n }\n\n purchaseItem(itemType: PurchaseItemType, itemId: string): Promise<UltraResponse<PurchaseItemResult>> {\n return this.clientMessenger.sendRequest<PurchaseItemResult>('purchaseItem', {\n itemType,\n itemId,\n });\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
+ {"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,EAML,cAAc,GAOf,MAAM,kBAAkB,CAAC;AAE1B,MAAM,OAAO,WAAW;IAItB,YAA6B,OAA+B;QAA/B,YAAO,GAAP,OAAO,CAAwB;QAC1D,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;QAChE,IAAI,CAAC,eAAe,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACjE,CAAC;IAED,OAAO,CAAC,CAAiB;QACvB,OAAO,IAAI,CAAC,eAAe,CAAC,WAAW,CAAgB,SAAS,EAAE,EAAE,CAAC,CAAC;IACxE,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,eAAe,CAAC,WAAW,CAAU,YAAY,EAAE,EAAE,CAAC,CAAC;IACrE,CAAC;IAED,WAAW,CAAC,OAAe;QACzB,OAAO,IAAI,CAAC,eAAe,CAAC,WAAW,CAAoB,aAAa,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IACzF,CAAC;IAED,eAAe,CACb,WAA4D,EAC5D,OAAgC;QAEhC,OAAO,IAAI,CAAC,eAAe,CAAC,WAAW,CAAwB,iBAAiB,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC;IAC9G,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,WAAW,IAAI,SAAS,CAAC;QAE3D,QAAQ,WAAW,EAAE,CAAC;YACpB,KAAK,SAAS;gBACZ,MAAM,cAAc,GAAG,oBAAoB,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC;gBACxE,OAAO;oBACL,MAAM,EAAE,cAAc,CAAC,OAAO;oBAC9B,IAAI,EAAE,cAAc;iBACrB,CAAC;YAEJ,KAAK,SAAS;gBACZ,MAAM,cAAc,GAAG,oBAAoB,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC;gBACxE,OAAO;oBACL,MAAM,EAAE,cAAc,CAAC,OAAO;oBAC9B,IAAI,EAAE,cAAc;iBACrB,CAAC;YAEJ;gBACE,OAAO,IAAI,CAAC,eAAe,CAAC,WAAW,CAAS,YAAY,EAAE,EAAE,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;IAED,YAAY,CAAC,QAA0B,EAAE,MAAc;QACrD,OAAO,IAAI,CAAC,eAAe,CAAC,WAAW,CAAqB,cAAc,EAAE;YAC1E,QAAQ;YACR,MAAM;SACP,CAAC,CAAC;IACL,CAAC;IAEO,gBAAgB;QACtB,MAAM,GAAG,GAAG,oBAAoB,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,IAAI,SAAS,CAAC,CAAC;QACpF,OAAO,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;IACzC,CAAC;CACF","sourcesContent":["import { ClientMessenger } from '../../common/client-messenger';\nimport { WindowManager } from '../../common/window-manager';\nimport UltraWalletSdkConfig from '../../config/ultra-wallet-sdk.config';\nimport {\n BlockchainTransaction,\n ConnectParams,\n ConnectResult,\n PurchaseItemResult,\n PurchaseItemType,\n ResponseStatus,\n SignMessageResult,\n SignTransactionOptions,\n SignTransactionResult,\n UltraResponse,\n UltraWalletProvider,\n UltraWalletSdkOptions,\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(_?: ConnectParams): Promise<UltraResponse<ConnectResult>> {\n return this.clientMessenger.sendRequest<ConnectResult>('connect', {});\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 purchaseItem(itemType: PurchaseItemType, itemId: string): Promise<UltraResponse<PurchaseItemResult>> {\n return this.clientMessenger.sendRequest<PurchaseItemResult>('purchaseItem', {\n itemType,\n itemId,\n });\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 { BlockchainTransaction, ConnectParams, ConnectResult, PurchaseItemResult, PurchaseItemType, SignMessageResult, SignTransactionResult, UltraResponse, UltraWalletSdkOptions } from './interfaces';
1
+ import { BlockchainTransaction, ConnectParams, ConnectResult, PurchaseItemResult, PurchaseItemType, SignMessageResult, SignTransactionOptions, SignTransactionResult, UltraResponse, UltraWalletSdkOptions } 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).
@@ -17,7 +17,7 @@ export declare class UltraWalletSDK {
17
17
  connect(params?: ConnectParams): Promise<UltraResponse<ConnectResult>>;
18
18
  disconnect(): Promise<UltraResponse<boolean>>;
19
19
  signMessage(message: string): Promise<UltraResponse<SignMessageResult>>;
20
- signTransaction(transaction: BlockchainTransaction | BlockchainTransaction[]): Promise<UltraResponse<SignTransactionResult>>;
20
+ signTransaction(transaction: BlockchainTransaction | BlockchainTransaction[], options?: SignTransactionOptions): Promise<UltraResponse<SignTransactionResult>>;
21
21
  getChainId(): Promise<UltraResponse<string>>;
22
22
  purchaseItem(itemType: PurchaseItemType, itemId: string): Promise<UltraResponse<PurchaseItemResult>>;
23
23
  private resolveWalletProvider;
@@ -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,qBAAqB,EACrB,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,aAAa,EAEb,qBAAqB,EACtB,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,GAC3D,OAAO,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC;IAIhD,UAAU,IAAI,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAI5C,YAAY,CAAC,QAAQ,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;IAIpG,OAAO,CAAC,qBAAqB;CAO9B"}
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,qBAAqB,EACrB,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,EACtB,qBAAqB,EACrB,aAAa,EAEb,qBAAqB,EACtB,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,YAAY,CAAC,QAAQ,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;IAIpG,OAAO,CAAC,qBAAqB;CAO9B"}
@@ -25,8 +25,8 @@ export class UltraWalletSDK {
25
25
  signMessage(message) {
26
26
  return this.provider.signMessage(message);
27
27
  }
28
- signTransaction(transaction) {
29
- return this.provider.signTransaction(transaction);
28
+ signTransaction(transaction, options) {
29
+ return this.provider.signTransaction(transaction, options);
30
30
  }
31
31
  getChainId() {
32
32
  return this.provider.getChainId();
@@ -1 +1 @@
1
- {"version":3,"file":"ultra-wallet-sdk.js","sourceRoot":"","sources":["../../../../../libs/wallet-sdk/src/lib/ultra-wallet-sdk.ts"],"names":[],"mappings":"AAYA,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;QAE5D,OAAO,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;IACpD,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;IACpC,CAAC;IAED,YAAY,CAAC,QAA0B,EAAE,MAAc;QACrD,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACtD,CAAC;IAEO,qBAAqB;QAC3B,IAAI,oBAAoB,EAAE,EAAE,CAAC;YAC3B,OAAO,IAAI,iBAAiB,EAAE,CAAC;QACjC,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;CACF","sourcesContent":["import {\n BlockchainTransaction,\n ConnectParams,\n ConnectResult,\n PurchaseItemResult,\n PurchaseItemType,\n SignMessageResult,\n SignTransactionResult,\n UltraResponse,\n UltraWalletProvider,\n UltraWalletSdkOptions,\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 ): Promise<UltraResponse<SignTransactionResult>> {\n return this.provider.signTransaction(transaction);\n }\n\n getChainId(): Promise<UltraResponse<string>> {\n return this.provider.getChainId();\n }\n\n purchaseItem(itemType: PurchaseItemType, itemId: string): Promise<UltraResponse<PurchaseItemResult>> {\n return this.provider.purchaseItem(itemType, itemId);\n }\n\n private resolveWalletProvider(): UltraWalletProvider {\n if (isExtensionAvailable()) {\n return new ExtensionProvider();\n } else {\n return new WebProvider(this.options);\n }\n }\n}\n"]}
1
+ {"version":3,"file":"ultra-wallet-sdk.js","sourceRoot":"","sources":["../../../../../libs/wallet-sdk/src/lib/ultra-wallet-sdk.ts"],"names":[],"mappings":"AAaA,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,YAAY,CAAC,QAA0B,EAAE,MAAc;QACrD,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACtD,CAAC;IAEO,qBAAqB;QAC3B,IAAI,oBAAoB,EAAE,EAAE,CAAC;YAC3B,OAAO,IAAI,iBAAiB,EAAE,CAAC;QACjC,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;CACF","sourcesContent":["import {\n BlockchainTransaction,\n ConnectParams,\n ConnectResult,\n PurchaseItemResult,\n PurchaseItemType,\n SignMessageResult,\n SignTransactionOptions,\n SignTransactionResult,\n UltraResponse,\n UltraWalletProvider,\n UltraWalletSdkOptions,\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 purchaseItem(itemType: PurchaseItemType, itemId: string): Promise<UltraResponse<PurchaseItemResult>> {\n return this.provider.purchaseItem(itemType, itemId);\n }\n\n private resolveWalletProvider(): UltraWalletProvider {\n if (isExtensionAvailable()) {\n return new ExtensionProvider();\n } else {\n return new WebProvider(this.options);\n }\n }\n}\n"]}