@joai/warps-wallet-gaupa 1.0.0-beta.11 → 1.0.0-beta.12

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/dist/index.d.cts CHANGED
@@ -1,5 +1,5 @@
1
- import { Transaction } from '@multiversx/sdk-core';
2
1
  import { WalletProvider, WarpWalletProvider, WarpClientConfig, WarpChainInfo, WarpWalletDetails, WalletProviderFactory } from '@joai/warps';
2
+ import { Transaction } from '@multiversx/sdk-core';
3
3
 
4
4
  type ProviderConfig = {
5
5
  apiKey: string;
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { Transaction } from '@multiversx/sdk-core';
2
1
  import { WalletProvider, WarpWalletProvider, WarpClientConfig, WarpChainInfo, WarpWalletDetails, WalletProviderFactory } from '@joai/warps';
2
+ import { Transaction } from '@multiversx/sdk-core';
3
3
 
4
4
  type ProviderConfig = {
5
5
  apiKey: string;
package/dist/index.js CHANGED
@@ -26,20 +26,21 @@ __export(index_exports, {
26
26
  module.exports = __toCommonJS(index_exports);
27
27
 
28
28
  // src/GaupaWalletProvider.ts
29
- var import_sdk_core = require("@multiversx/sdk-core");
30
29
  var import_warps = require("@joai/warps");
30
+ var import_sdk_core = require("@multiversx/sdk-core");
31
31
 
32
32
  // src/config.ts
33
33
  var getGaupaApiUrl = (env) => {
34
- if (env === "devnet") return "https://devnet-login.gaupa.xyz/api";
35
- return "https://login.gaupa.xyz/api";
34
+ if (env === "devnet") return "https://devnet-login.gaupa.xyz";
35
+ if (env === "testnet") return "https://testnet-login.gaupa.xyz";
36
+ return "https://login.gaupa.xyz";
36
37
  };
37
38
 
38
39
  // src/GaupaApiClient.ts
39
40
  var GaupaApiClient = class {
40
- constructor(apiKey, apiUrl, publicKey) {
41
- this.apiKey = apiKey;
41
+ constructor(publicKey, apiKey, apiUrl) {
42
42
  this.publicKey = publicKey;
43
+ this.apiKey = apiKey;
43
44
  this.baseUrl = apiUrl.replace(/\/$/, "");
44
45
  }
45
46
  async createAgenticWallet(request) {
@@ -48,6 +49,12 @@ var GaupaApiClient = class {
48
49
  body: JSON.stringify(request)
49
50
  });
50
51
  }
52
+ async signTransaction(request) {
53
+ return await this.request("/manage/submit-agentic-transaction", {
54
+ method: "POST",
55
+ body: JSON.stringify(request)
56
+ });
57
+ }
51
58
  async signMessage(request) {
52
59
  return this.request("/manage/sign-agentic-message", {
53
60
  method: "POST",
@@ -65,11 +72,21 @@ var GaupaApiClient = class {
65
72
  ...options,
66
73
  headers
67
74
  });
75
+ const responseStatus = response.status;
76
+ let responseBody;
77
+ try {
78
+ responseBody = await response.text();
79
+ } catch (error) {
80
+ responseBody = `Failed to read response body: ${error}`;
81
+ }
68
82
  if (!response.ok) {
69
- const errorText = await response.text().catch(() => "Unknown error");
70
- throw new Error(`Gaupa API error (${response.status}): ${errorText}`);
83
+ throw new Error(`Gaupa API error (${responseStatus}): ${responseBody || "Unknown error"}`);
84
+ }
85
+ try {
86
+ return JSON.parse(responseBody || "{}");
87
+ } catch (error) {
88
+ throw new Error(`Failed to parse response JSON: ${error}. Response: ${responseBody}`);
71
89
  }
72
- return response.json();
73
90
  }
74
91
  };
75
92
 
@@ -80,8 +97,7 @@ var _GaupaWalletProvider = class _GaupaWalletProvider {
80
97
  this.chain = chain;
81
98
  this.gaupaConfig = gaupaConfig;
82
99
  this.cachedAddress = null;
83
- const apiUrl = getGaupaApiUrl(config.env);
84
- this.client = new GaupaApiClient(gaupaConfig.apiKey, apiUrl, gaupaConfig.publicKey);
100
+ this.client = new GaupaApiClient(gaupaConfig.publicKey, gaupaConfig.apiKey, getGaupaApiUrl(config.env));
85
101
  }
86
102
  async getAddress() {
87
103
  if (this.cachedAddress) return this.cachedAddress;
@@ -99,22 +115,16 @@ var _GaupaWalletProvider = class _GaupaWalletProvider {
99
115
  async signTransaction(tx) {
100
116
  const walletAddress = await this.getAddress();
101
117
  if (!walletAddress) throw new Error("GaupaWalletProvider: Wallet address not found");
102
- const transactionData = this.formatTransactionForApi(tx);
103
- const message = JSON.stringify(transactionData);
104
- const result = await this.client.signMessage({
105
- message,
106
- walletAddress
107
- });
108
- tx.signature = new Uint8Array(Buffer.from(result.signature, "hex"));
118
+ tx.sender = import_sdk_core.Address.newFromBech32(walletAddress);
119
+ const result = await this.client.signTransaction(this.formatTransactionForApi(tx));
120
+ if (!result.data?.transaction?.signature) throw new Error("Gaupa API did not return a valid transaction signature");
121
+ tx.signature = new Uint8Array(Buffer.from(result.data.transaction.signature, "hex"));
109
122
  return tx;
110
123
  }
111
124
  async signMessage(message) {
112
125
  const walletAddress = await this.getAddress();
113
126
  if (!walletAddress) throw new Error("GaupaWalletProvider: Wallet address not found");
114
- const result = await this.client.signMessage({
115
- message,
116
- walletAddress
117
- });
127
+ const result = await this.client.signMessage({ message, walletAddress });
118
128
  if (!result.signature) throw new Error("Gaupa API did not return signature");
119
129
  return result.signature;
120
130
  }
@@ -143,13 +153,20 @@ var _GaupaWalletProvider = class _GaupaWalletProvider {
143
153
  }
144
154
  }
145
155
  formatTransactionForApi(tx) {
156
+ const walletAddress = tx.sender.toBech32();
146
157
  return {
147
- receiver: tx.receiver.toBech32(),
148
- value: tx.value.toString(),
149
- ...tx.data?.length && { data: Buffer.from(tx.data).toString("base64") },
150
- gasLimit: Number(tx.gasLimit),
151
- gasPrice: Number(tx.gasPrice),
152
- ...tx.nonce !== void 0 && { nonce: Number(tx.nonce) }
158
+ walletAddress,
159
+ send: false,
160
+ relay: false,
161
+ transaction: {
162
+ sender: walletAddress,
163
+ receiver: tx.receiver.toBech32(),
164
+ value: tx.value.toString(),
165
+ gasLimit: Number(tx.gasLimit),
166
+ gasPrice: Number(tx.gasPrice),
167
+ ...tx.nonce !== void 0 && { nonce: Number(tx.nonce) },
168
+ ...tx.data?.length && { data: Buffer.from(tx.data).toString("base64") }
169
+ }
153
170
  };
154
171
  }
155
172
  };
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/GaupaWalletProvider.ts","../src/config.ts","../src/GaupaApiClient.ts","../src/helpers.ts"],"sourcesContent":["export * from './GaupaWalletProvider'\nexport * from './helpers'\nexport * from './types'\n","import { Address, Transaction } from '@multiversx/sdk-core'\nimport {\n getWarpWalletAddressFromConfig,\n setWarpWalletInConfig,\n WalletProvider,\n WarpChainInfo,\n WarpClientConfig,\n WarpWalletDetails,\n WarpWalletProvider,\n} from '@joai/warps'\nimport { getGaupaApiUrl } from './config'\nimport { GaupaApiClient } from './GaupaApiClient'\nimport { ProviderConfig } from './types'\n\nexport class GaupaWalletProvider implements WalletProvider {\n static readonly PROVIDER_NAME: WarpWalletProvider = 'gaupa'\n private readonly client: GaupaApiClient\n private cachedAddress: string | null = null\n\n constructor(\n private readonly config: WarpClientConfig,\n private readonly chain: WarpChainInfo,\n private readonly gaupaConfig: ProviderConfig\n ) {\n const apiUrl = getGaupaApiUrl(config.env)\n this.client = new GaupaApiClient(gaupaConfig.apiKey, apiUrl, gaupaConfig.publicKey)\n }\n\n async getAddress(): Promise<string | null> {\n if (this.cachedAddress) return this.cachedAddress\n const address = getWarpWalletAddressFromConfig(this.config, this.chain.name)\n if (!address) return null\n this.cachedAddress = address\n return address\n }\n\n async getPublicKey(): Promise<string | null> {\n const address = await this.getAddress()\n if (!address) return null\n const pubKey = Address.newFromBech32(address).getPublicKey().toString('hex')\n return pubKey\n }\n\n async signTransaction(tx: Transaction): Promise<Transaction> {\n const walletAddress = await this.getAddress()\n if (!walletAddress) throw new Error('GaupaWalletProvider: Wallet address not found')\n\n const transactionData = this.formatTransactionForApi(tx)\n const message = JSON.stringify(transactionData)\n\n const result = await this.client.signMessage({\n message,\n walletAddress,\n })\n\n tx.signature = new Uint8Array(Buffer.from(result.signature, 'hex'))\n\n return tx\n }\n\n async signMessage(message: string): Promise<string> {\n const walletAddress = await this.getAddress()\n if (!walletAddress) throw new Error('GaupaWalletProvider: Wallet address not found')\n\n const result = await this.client.signMessage({\n message,\n walletAddress,\n })\n\n if (!result.signature) throw new Error('Gaupa API did not return signature')\n\n return result.signature\n }\n\n async importFromMnemonic(mnemonic: string): Promise<WarpWalletDetails> {\n throw new Error('GaupaWalletProvider: importFromMnemonic() is not supported. Use generate() to create a new wallet via Gaupa API.')\n }\n\n async importFromPrivateKey(privateKey: string): Promise<WarpWalletDetails> {\n throw new Error('GaupaWalletProvider: importFromPrivateKey() is not supported. Use generate() to create a new wallet via Gaupa API.')\n }\n\n async export(): Promise<WarpWalletDetails> {\n throw new Error('GaupaWalletProvider: export() is not supported. Private keys are managed by Gaupa and cannot be exported.')\n }\n\n async generate(): Promise<WarpWalletDetails> {\n try {\n const wallet = await this.client.createAgenticWallet({})\n if (!wallet.success || !wallet.wallet.address_multiversx) throw new Error('Gaupa API did not return a valid wallet')\n\n const walletDetails: WarpWalletDetails = {\n provider: GaupaWalletProvider.PROVIDER_NAME,\n address: wallet.wallet.address_multiversx,\n }\n\n setWarpWalletInConfig(this.config, this.chain.name, walletDetails)\n this.cachedAddress = wallet.wallet.address_multiversx\n\n return walletDetails\n } catch (error) {\n throw new Error(`GaupaWalletProvider: Failed to generate wallet: ${error}`)\n }\n }\n\n private formatTransactionForApi(tx: Transaction) {\n return {\n receiver: tx.receiver.toBech32(),\n value: tx.value.toString(),\n ...(tx.data?.length && { data: Buffer.from(tx.data).toString('base64') }),\n gasLimit: Number(tx.gasLimit),\n gasPrice: Number(tx.gasPrice),\n ...(tx.nonce !== undefined && { nonce: Number(tx.nonce) }),\n }\n }\n}\n","import { WarpChainEnv } from '@joai/warps'\n\nexport const getGaupaApiUrl = (env: WarpChainEnv): string => {\n if (env === 'devnet') return 'https://devnet-login.gaupa.xyz/api'\n return 'https://login.gaupa.xyz/api'\n}\n","type CreateAgenticWalletRequest = { shard?: number }\ntype CreateAgenticWalletResponse = {\n success: boolean\n wallet: { address_multiversx: string; address_evm?: string; shard?: number | null }\n}\ntype SignMessageRequest = { message: string; walletAddress: string }\ntype SignMessageResponse = { address: string; signature: string; message: string; version: number; signer: string; txHash?: string }\n\nexport class GaupaApiClient {\n private readonly baseUrl: string\n private readonly apiKey: string\n private readonly publicKey: string\n\n constructor(apiKey: string, apiUrl: string, publicKey: string) {\n this.apiKey = apiKey\n this.publicKey = publicKey\n this.baseUrl = apiUrl.replace(/\\/$/, '')\n }\n\n async createAgenticWallet(request: CreateAgenticWalletRequest): Promise<CreateAgenticWalletResponse> {\n return this.request<CreateAgenticWalletResponse>('/manage/create-agentic-wallet', {\n method: 'POST',\n body: JSON.stringify(request),\n })\n }\n\n async signMessage(request: SignMessageRequest): Promise<SignMessageResponse> {\n return this.request<SignMessageResponse>('/manage/sign-agentic-message', {\n method: 'POST',\n body: JSON.stringify(request),\n })\n }\n\n private async request<T>(endpoint: string, options: RequestInit = {}): Promise<T> {\n const url = `${this.baseUrl}${endpoint}`\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n 'x-api-key': this.apiKey,\n 'Public-Key': this.publicKey,\n }\n\n const response = await fetch(url, {\n ...options,\n headers,\n })\n\n if (!response.ok) {\n const errorText = await response.text().catch(() => 'Unknown error')\n throw new Error(`Gaupa API error (${response.status}): ${errorText}`)\n }\n\n return response.json()\n }\n}\n","import { WalletProviderFactory, WarpChainInfo, WarpClientConfig } from '@joai/warps'\nimport { GaupaWalletProvider } from './GaupaWalletProvider'\nimport { ProviderConfig } from './types'\n\nexport const createGaupaWalletProvider = (gaupaConfig: ProviderConfig): WalletProviderFactory => {\n return (config: WarpClientConfig, chain: WarpChainInfo) => new GaupaWalletProvider(config, chain, gaupaConfig)\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/index.ts","../src/GaupaWalletProvider.ts","../src/config.ts","../src/GaupaApiClient.ts","../src/helpers.ts"],"sourcesContent":["export * from './GaupaWalletProvider'\nexport * from './helpers'\nexport * from './types'\n","import {\n getWarpWalletAddressFromConfig,\n setWarpWalletInConfig,\n WalletProvider,\n WarpChainInfo,\n WarpClientConfig,\n WarpWalletDetails,\n WarpWalletProvider,\n} from '@joai/warps'\nimport { Address, Transaction } from '@multiversx/sdk-core'\nimport { getGaupaApiUrl } from './config'\nimport { GaupaApiClient } from './GaupaApiClient'\nimport { ProviderConfig } from './types'\n\nexport class GaupaWalletProvider implements WalletProvider {\n static readonly PROVIDER_NAME: WarpWalletProvider = 'gaupa'\n private readonly client: GaupaApiClient\n private cachedAddress: string | null = null\n\n constructor(\n private readonly config: WarpClientConfig,\n private readonly chain: WarpChainInfo,\n private readonly gaupaConfig: ProviderConfig\n ) {\n this.client = new GaupaApiClient(gaupaConfig.publicKey, gaupaConfig.apiKey, getGaupaApiUrl(config.env))\n }\n\n async getAddress(): Promise<string | null> {\n if (this.cachedAddress) return this.cachedAddress\n const address = getWarpWalletAddressFromConfig(this.config, this.chain.name)\n if (!address) return null\n this.cachedAddress = address\n return address\n }\n\n async getPublicKey(): Promise<string | null> {\n const address = await this.getAddress()\n if (!address) return null\n const pubKey = Address.newFromBech32(address).getPublicKey().toString('hex')\n return pubKey\n }\n\n async signTransaction(tx: Transaction): Promise<Transaction> {\n const walletAddress = await this.getAddress()\n if (!walletAddress) throw new Error('GaupaWalletProvider: Wallet address not found')\n\n tx.sender = Address.newFromBech32(walletAddress)\n const result = await this.client.signTransaction(this.formatTransactionForApi(tx))\n if (!result.data?.transaction?.signature) throw new Error('Gaupa API did not return a valid transaction signature')\n\n tx.signature = new Uint8Array(Buffer.from(result.data.transaction.signature, 'hex'))\n\n return tx\n }\n\n async signMessage(message: string): Promise<string> {\n const walletAddress = await this.getAddress()\n if (!walletAddress) throw new Error('GaupaWalletProvider: Wallet address not found')\n\n const result = await this.client.signMessage({ message, walletAddress })\n if (!result.signature) throw new Error('Gaupa API did not return signature')\n\n return result.signature\n }\n\n async importFromMnemonic(mnemonic: string): Promise<WarpWalletDetails> {\n throw new Error('GaupaWalletProvider: importFromMnemonic() is not supported. Use generate() to create a new wallet via Gaupa API.')\n }\n\n async importFromPrivateKey(privateKey: string): Promise<WarpWalletDetails> {\n throw new Error('GaupaWalletProvider: importFromPrivateKey() is not supported. Use generate() to create a new wallet via Gaupa API.')\n }\n\n async export(): Promise<WarpWalletDetails> {\n throw new Error('GaupaWalletProvider: export() is not supported. Private keys are managed by Gaupa and cannot be exported.')\n }\n\n async generate(): Promise<WarpWalletDetails> {\n try {\n const wallet = await this.client.createAgenticWallet({})\n if (!wallet.success || !wallet.wallet.address_multiversx) throw new Error('Gaupa API did not return a valid wallet')\n\n const walletDetails: WarpWalletDetails = {\n provider: GaupaWalletProvider.PROVIDER_NAME,\n address: wallet.wallet.address_multiversx,\n }\n\n setWarpWalletInConfig(this.config, this.chain.name, walletDetails)\n this.cachedAddress = wallet.wallet.address_multiversx\n\n return walletDetails\n } catch (error) {\n throw new Error(`GaupaWalletProvider: Failed to generate wallet: ${error}`)\n }\n }\n\n private formatTransactionForApi(tx: Transaction) {\n const walletAddress = tx.sender.toBech32()\n return {\n walletAddress,\n send: false,\n relay: false,\n transaction: {\n sender: walletAddress,\n receiver: tx.receiver.toBech32(),\n value: tx.value.toString(),\n gasLimit: Number(tx.gasLimit),\n gasPrice: Number(tx.gasPrice),\n ...(tx.nonce !== undefined && { nonce: Number(tx.nonce) }),\n ...(tx.data?.length && { data: Buffer.from(tx.data).toString('base64') }),\n },\n }\n }\n}\n","import { WarpChainEnv } from '@joai/warps'\n\nexport const getGaupaApiUrl = (env: WarpChainEnv): string => {\n if (env === 'devnet') return 'https://devnet-login.gaupa.xyz'\n if (env === 'testnet') return 'https://testnet-login.gaupa.xyz'\n return 'https://login.gaupa.xyz'\n}\n","type CreateAgenticWalletRequest = { shard?: number; userId?: string }\ntype CreateAgenticWalletResponse = {\n success: boolean\n wallet: { address_multiversx: string; address_evm?: string; shard?: number | null }\n}\ntype SignMessageRequest = { message: string; walletAddress: string }\ntype SignMessageResponse = { address: string; signature: string; message: string; version: number; signer: string; txHash?: string }\ntype SignTransactionRequest = {\n userId?: string\n walletAddress?: string\n send?: boolean\n relay?: boolean\n transaction: {\n sender?: string\n receiver: string\n value: string\n data?: string\n gasLimit: number\n gasPrice: number\n nonce?: number\n }\n}\ntype SignTransactionResponse = {\n status: string\n data: {\n transaction: {\n nonce: number\n value: string\n receiver: string\n sender: string\n gasPrice: number\n gasLimit: number\n chainID: string\n version: number\n signature: string\n }\n sender: string\n receiver: string\n timestamp: string\n }\n}\n\nexport class GaupaApiClient {\n private readonly publicKey: string\n private readonly apiKey: string\n private readonly baseUrl: string\n\n constructor(publicKey: string, apiKey: string, apiUrl: string) {\n this.publicKey = publicKey\n this.apiKey = apiKey\n this.baseUrl = apiUrl.replace(/\\/$/, '')\n }\n\n async createAgenticWallet(request: CreateAgenticWalletRequest): Promise<CreateAgenticWalletResponse> {\n return this.request<CreateAgenticWalletResponse>('/manage/create-agentic-wallet', {\n method: 'POST',\n body: JSON.stringify(request),\n })\n }\n\n async signTransaction(request: SignTransactionRequest): Promise<SignTransactionResponse> {\n return await this.request<SignTransactionResponse>('/manage/submit-agentic-transaction', {\n method: 'POST',\n body: JSON.stringify(request),\n })\n }\n\n async signMessage(request: SignMessageRequest): Promise<SignMessageResponse> {\n return this.request<SignMessageResponse>('/manage/sign-agentic-message', {\n method: 'POST',\n body: JSON.stringify(request),\n })\n }\n\n private async request<T>(endpoint: string, options: RequestInit = {}): Promise<T> {\n const url = `${this.baseUrl}${endpoint}`\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n 'x-api-key': this.apiKey,\n 'Public-Key': this.publicKey,\n }\n\n const response = await fetch(url, {\n ...options,\n headers,\n })\n\n const responseStatus = response.status\n let responseBody: string | undefined\n\n try {\n responseBody = await response.text()\n } catch (error) {\n responseBody = `Failed to read response body: ${error}`\n }\n\n if (!response.ok) {\n throw new Error(`Gaupa API error (${responseStatus}): ${responseBody || 'Unknown error'}`)\n }\n\n try {\n return JSON.parse(responseBody || '{}')\n } catch (error) {\n throw new Error(`Failed to parse response JSON: ${error}. Response: ${responseBody}`)\n }\n }\n}\n","import { WalletProviderFactory, WarpChainInfo, WarpClientConfig } from '@joai/warps'\nimport { GaupaWalletProvider } from './GaupaWalletProvider'\nimport { ProviderConfig } from './types'\n\nexport const createGaupaWalletProvider = (gaupaConfig: ProviderConfig): WalletProviderFactory => {\n return (config: WarpClientConfig, chain: WarpChainInfo) => new GaupaWalletProvider(config, chain, gaupaConfig)\n}\n"],"mappings":"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","names":[]}
package/dist/index.mjs CHANGED
@@ -1,21 +1,22 @@
1
1
  // src/GaupaWalletProvider.ts
2
- import { Address } from "@multiversx/sdk-core";
3
2
  import {
4
3
  getWarpWalletAddressFromConfig,
5
4
  setWarpWalletInConfig
6
5
  } from "@joai/warps";
6
+ import { Address } from "@multiversx/sdk-core";
7
7
 
8
8
  // src/config.ts
9
9
  var getGaupaApiUrl = (env) => {
10
- if (env === "devnet") return "https://devnet-login.gaupa.xyz/api";
11
- return "https://login.gaupa.xyz/api";
10
+ if (env === "devnet") return "https://devnet-login.gaupa.xyz";
11
+ if (env === "testnet") return "https://testnet-login.gaupa.xyz";
12
+ return "https://login.gaupa.xyz";
12
13
  };
13
14
 
14
15
  // src/GaupaApiClient.ts
15
16
  var GaupaApiClient = class {
16
- constructor(apiKey, apiUrl, publicKey) {
17
- this.apiKey = apiKey;
17
+ constructor(publicKey, apiKey, apiUrl) {
18
18
  this.publicKey = publicKey;
19
+ this.apiKey = apiKey;
19
20
  this.baseUrl = apiUrl.replace(/\/$/, "");
20
21
  }
21
22
  async createAgenticWallet(request) {
@@ -24,6 +25,12 @@ var GaupaApiClient = class {
24
25
  body: JSON.stringify(request)
25
26
  });
26
27
  }
28
+ async signTransaction(request) {
29
+ return await this.request("/manage/submit-agentic-transaction", {
30
+ method: "POST",
31
+ body: JSON.stringify(request)
32
+ });
33
+ }
27
34
  async signMessage(request) {
28
35
  return this.request("/manage/sign-agentic-message", {
29
36
  method: "POST",
@@ -41,11 +48,21 @@ var GaupaApiClient = class {
41
48
  ...options,
42
49
  headers
43
50
  });
51
+ const responseStatus = response.status;
52
+ let responseBody;
53
+ try {
54
+ responseBody = await response.text();
55
+ } catch (error) {
56
+ responseBody = `Failed to read response body: ${error}`;
57
+ }
44
58
  if (!response.ok) {
45
- const errorText = await response.text().catch(() => "Unknown error");
46
- throw new Error(`Gaupa API error (${response.status}): ${errorText}`);
59
+ throw new Error(`Gaupa API error (${responseStatus}): ${responseBody || "Unknown error"}`);
60
+ }
61
+ try {
62
+ return JSON.parse(responseBody || "{}");
63
+ } catch (error) {
64
+ throw new Error(`Failed to parse response JSON: ${error}. Response: ${responseBody}`);
47
65
  }
48
- return response.json();
49
66
  }
50
67
  };
51
68
 
@@ -56,8 +73,7 @@ var _GaupaWalletProvider = class _GaupaWalletProvider {
56
73
  this.chain = chain;
57
74
  this.gaupaConfig = gaupaConfig;
58
75
  this.cachedAddress = null;
59
- const apiUrl = getGaupaApiUrl(config.env);
60
- this.client = new GaupaApiClient(gaupaConfig.apiKey, apiUrl, gaupaConfig.publicKey);
76
+ this.client = new GaupaApiClient(gaupaConfig.publicKey, gaupaConfig.apiKey, getGaupaApiUrl(config.env));
61
77
  }
62
78
  async getAddress() {
63
79
  if (this.cachedAddress) return this.cachedAddress;
@@ -75,22 +91,16 @@ var _GaupaWalletProvider = class _GaupaWalletProvider {
75
91
  async signTransaction(tx) {
76
92
  const walletAddress = await this.getAddress();
77
93
  if (!walletAddress) throw new Error("GaupaWalletProvider: Wallet address not found");
78
- const transactionData = this.formatTransactionForApi(tx);
79
- const message = JSON.stringify(transactionData);
80
- const result = await this.client.signMessage({
81
- message,
82
- walletAddress
83
- });
84
- tx.signature = new Uint8Array(Buffer.from(result.signature, "hex"));
94
+ tx.sender = Address.newFromBech32(walletAddress);
95
+ const result = await this.client.signTransaction(this.formatTransactionForApi(tx));
96
+ if (!result.data?.transaction?.signature) throw new Error("Gaupa API did not return a valid transaction signature");
97
+ tx.signature = new Uint8Array(Buffer.from(result.data.transaction.signature, "hex"));
85
98
  return tx;
86
99
  }
87
100
  async signMessage(message) {
88
101
  const walletAddress = await this.getAddress();
89
102
  if (!walletAddress) throw new Error("GaupaWalletProvider: Wallet address not found");
90
- const result = await this.client.signMessage({
91
- message,
92
- walletAddress
93
- });
103
+ const result = await this.client.signMessage({ message, walletAddress });
94
104
  if (!result.signature) throw new Error("Gaupa API did not return signature");
95
105
  return result.signature;
96
106
  }
@@ -119,13 +129,20 @@ var _GaupaWalletProvider = class _GaupaWalletProvider {
119
129
  }
120
130
  }
121
131
  formatTransactionForApi(tx) {
132
+ const walletAddress = tx.sender.toBech32();
122
133
  return {
123
- receiver: tx.receiver.toBech32(),
124
- value: tx.value.toString(),
125
- ...tx.data?.length && { data: Buffer.from(tx.data).toString("base64") },
126
- gasLimit: Number(tx.gasLimit),
127
- gasPrice: Number(tx.gasPrice),
128
- ...tx.nonce !== void 0 && { nonce: Number(tx.nonce) }
134
+ walletAddress,
135
+ send: false,
136
+ relay: false,
137
+ transaction: {
138
+ sender: walletAddress,
139
+ receiver: tx.receiver.toBech32(),
140
+ value: tx.value.toString(),
141
+ gasLimit: Number(tx.gasLimit),
142
+ gasPrice: Number(tx.gasPrice),
143
+ ...tx.nonce !== void 0 && { nonce: Number(tx.nonce) },
144
+ ...tx.data?.length && { data: Buffer.from(tx.data).toString("base64") }
145
+ }
129
146
  };
130
147
  }
131
148
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/GaupaWalletProvider.ts","../src/config.ts","../src/GaupaApiClient.ts","../src/helpers.ts"],"sourcesContent":["import { Address, Transaction } from '@multiversx/sdk-core'\nimport {\n getWarpWalletAddressFromConfig,\n setWarpWalletInConfig,\n WalletProvider,\n WarpChainInfo,\n WarpClientConfig,\n WarpWalletDetails,\n WarpWalletProvider,\n} from '@joai/warps'\nimport { getGaupaApiUrl } from './config'\nimport { GaupaApiClient } from './GaupaApiClient'\nimport { ProviderConfig } from './types'\n\nexport class GaupaWalletProvider implements WalletProvider {\n static readonly PROVIDER_NAME: WarpWalletProvider = 'gaupa'\n private readonly client: GaupaApiClient\n private cachedAddress: string | null = null\n\n constructor(\n private readonly config: WarpClientConfig,\n private readonly chain: WarpChainInfo,\n private readonly gaupaConfig: ProviderConfig\n ) {\n const apiUrl = getGaupaApiUrl(config.env)\n this.client = new GaupaApiClient(gaupaConfig.apiKey, apiUrl, gaupaConfig.publicKey)\n }\n\n async getAddress(): Promise<string | null> {\n if (this.cachedAddress) return this.cachedAddress\n const address = getWarpWalletAddressFromConfig(this.config, this.chain.name)\n if (!address) return null\n this.cachedAddress = address\n return address\n }\n\n async getPublicKey(): Promise<string | null> {\n const address = await this.getAddress()\n if (!address) return null\n const pubKey = Address.newFromBech32(address).getPublicKey().toString('hex')\n return pubKey\n }\n\n async signTransaction(tx: Transaction): Promise<Transaction> {\n const walletAddress = await this.getAddress()\n if (!walletAddress) throw new Error('GaupaWalletProvider: Wallet address not found')\n\n const transactionData = this.formatTransactionForApi(tx)\n const message = JSON.stringify(transactionData)\n\n const result = await this.client.signMessage({\n message,\n walletAddress,\n })\n\n tx.signature = new Uint8Array(Buffer.from(result.signature, 'hex'))\n\n return tx\n }\n\n async signMessage(message: string): Promise<string> {\n const walletAddress = await this.getAddress()\n if (!walletAddress) throw new Error('GaupaWalletProvider: Wallet address not found')\n\n const result = await this.client.signMessage({\n message,\n walletAddress,\n })\n\n if (!result.signature) throw new Error('Gaupa API did not return signature')\n\n return result.signature\n }\n\n async importFromMnemonic(mnemonic: string): Promise<WarpWalletDetails> {\n throw new Error('GaupaWalletProvider: importFromMnemonic() is not supported. Use generate() to create a new wallet via Gaupa API.')\n }\n\n async importFromPrivateKey(privateKey: string): Promise<WarpWalletDetails> {\n throw new Error('GaupaWalletProvider: importFromPrivateKey() is not supported. Use generate() to create a new wallet via Gaupa API.')\n }\n\n async export(): Promise<WarpWalletDetails> {\n throw new Error('GaupaWalletProvider: export() is not supported. Private keys are managed by Gaupa and cannot be exported.')\n }\n\n async generate(): Promise<WarpWalletDetails> {\n try {\n const wallet = await this.client.createAgenticWallet({})\n if (!wallet.success || !wallet.wallet.address_multiversx) throw new Error('Gaupa API did not return a valid wallet')\n\n const walletDetails: WarpWalletDetails = {\n provider: GaupaWalletProvider.PROVIDER_NAME,\n address: wallet.wallet.address_multiversx,\n }\n\n setWarpWalletInConfig(this.config, this.chain.name, walletDetails)\n this.cachedAddress = wallet.wallet.address_multiversx\n\n return walletDetails\n } catch (error) {\n throw new Error(`GaupaWalletProvider: Failed to generate wallet: ${error}`)\n }\n }\n\n private formatTransactionForApi(tx: Transaction) {\n return {\n receiver: tx.receiver.toBech32(),\n value: tx.value.toString(),\n ...(tx.data?.length && { data: Buffer.from(tx.data).toString('base64') }),\n gasLimit: Number(tx.gasLimit),\n gasPrice: Number(tx.gasPrice),\n ...(tx.nonce !== undefined && { nonce: Number(tx.nonce) }),\n }\n }\n}\n","import { WarpChainEnv } from '@joai/warps'\n\nexport const getGaupaApiUrl = (env: WarpChainEnv): string => {\n if (env === 'devnet') return 'https://devnet-login.gaupa.xyz/api'\n return 'https://login.gaupa.xyz/api'\n}\n","type CreateAgenticWalletRequest = { shard?: number }\ntype CreateAgenticWalletResponse = {\n success: boolean\n wallet: { address_multiversx: string; address_evm?: string; shard?: number | null }\n}\ntype SignMessageRequest = { message: string; walletAddress: string }\ntype SignMessageResponse = { address: string; signature: string; message: string; version: number; signer: string; txHash?: string }\n\nexport class GaupaApiClient {\n private readonly baseUrl: string\n private readonly apiKey: string\n private readonly publicKey: string\n\n constructor(apiKey: string, apiUrl: string, publicKey: string) {\n this.apiKey = apiKey\n this.publicKey = publicKey\n this.baseUrl = apiUrl.replace(/\\/$/, '')\n }\n\n async createAgenticWallet(request: CreateAgenticWalletRequest): Promise<CreateAgenticWalletResponse> {\n return this.request<CreateAgenticWalletResponse>('/manage/create-agentic-wallet', {\n method: 'POST',\n body: JSON.stringify(request),\n })\n }\n\n async signMessage(request: SignMessageRequest): Promise<SignMessageResponse> {\n return this.request<SignMessageResponse>('/manage/sign-agentic-message', {\n method: 'POST',\n body: JSON.stringify(request),\n })\n }\n\n private async request<T>(endpoint: string, options: RequestInit = {}): Promise<T> {\n const url = `${this.baseUrl}${endpoint}`\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n 'x-api-key': this.apiKey,\n 'Public-Key': this.publicKey,\n }\n\n const response = await fetch(url, {\n ...options,\n headers,\n })\n\n if (!response.ok) {\n const errorText = await response.text().catch(() => 'Unknown error')\n throw new Error(`Gaupa API error (${response.status}): ${errorText}`)\n }\n\n return response.json()\n }\n}\n","import { WalletProviderFactory, WarpChainInfo, WarpClientConfig } from '@joai/warps'\nimport { GaupaWalletProvider } from './GaupaWalletProvider'\nimport { ProviderConfig } from './types'\n\nexport const createGaupaWalletProvider = (gaupaConfig: ProviderConfig): WalletProviderFactory => {\n return (config: WarpClientConfig, chain: WarpChainInfo) => new GaupaWalletProvider(config, chain, gaupaConfig)\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/GaupaWalletProvider.ts","../src/config.ts","../src/GaupaApiClient.ts","../src/helpers.ts"],"sourcesContent":["import {\n getWarpWalletAddressFromConfig,\n setWarpWalletInConfig,\n WalletProvider,\n WarpChainInfo,\n WarpClientConfig,\n WarpWalletDetails,\n WarpWalletProvider,\n} from '@joai/warps'\nimport { Address, Transaction } from '@multiversx/sdk-core'\nimport { getGaupaApiUrl } from './config'\nimport { GaupaApiClient } from './GaupaApiClient'\nimport { ProviderConfig } from './types'\n\nexport class GaupaWalletProvider implements WalletProvider {\n static readonly PROVIDER_NAME: WarpWalletProvider = 'gaupa'\n private readonly client: GaupaApiClient\n private cachedAddress: string | null = null\n\n constructor(\n private readonly config: WarpClientConfig,\n private readonly chain: WarpChainInfo,\n private readonly gaupaConfig: ProviderConfig\n ) {\n this.client = new GaupaApiClient(gaupaConfig.publicKey, gaupaConfig.apiKey, getGaupaApiUrl(config.env))\n }\n\n async getAddress(): Promise<string | null> {\n if (this.cachedAddress) return this.cachedAddress\n const address = getWarpWalletAddressFromConfig(this.config, this.chain.name)\n if (!address) return null\n this.cachedAddress = address\n return address\n }\n\n async getPublicKey(): Promise<string | null> {\n const address = await this.getAddress()\n if (!address) return null\n const pubKey = Address.newFromBech32(address).getPublicKey().toString('hex')\n return pubKey\n }\n\n async signTransaction(tx: Transaction): Promise<Transaction> {\n const walletAddress = await this.getAddress()\n if (!walletAddress) throw new Error('GaupaWalletProvider: Wallet address not found')\n\n tx.sender = Address.newFromBech32(walletAddress)\n const result = await this.client.signTransaction(this.formatTransactionForApi(tx))\n if (!result.data?.transaction?.signature) throw new Error('Gaupa API did not return a valid transaction signature')\n\n tx.signature = new Uint8Array(Buffer.from(result.data.transaction.signature, 'hex'))\n\n return tx\n }\n\n async signMessage(message: string): Promise<string> {\n const walletAddress = await this.getAddress()\n if (!walletAddress) throw new Error('GaupaWalletProvider: Wallet address not found')\n\n const result = await this.client.signMessage({ message, walletAddress })\n if (!result.signature) throw new Error('Gaupa API did not return signature')\n\n return result.signature\n }\n\n async importFromMnemonic(mnemonic: string): Promise<WarpWalletDetails> {\n throw new Error('GaupaWalletProvider: importFromMnemonic() is not supported. Use generate() to create a new wallet via Gaupa API.')\n }\n\n async importFromPrivateKey(privateKey: string): Promise<WarpWalletDetails> {\n throw new Error('GaupaWalletProvider: importFromPrivateKey() is not supported. Use generate() to create a new wallet via Gaupa API.')\n }\n\n async export(): Promise<WarpWalletDetails> {\n throw new Error('GaupaWalletProvider: export() is not supported. Private keys are managed by Gaupa and cannot be exported.')\n }\n\n async generate(): Promise<WarpWalletDetails> {\n try {\n const wallet = await this.client.createAgenticWallet({})\n if (!wallet.success || !wallet.wallet.address_multiversx) throw new Error('Gaupa API did not return a valid wallet')\n\n const walletDetails: WarpWalletDetails = {\n provider: GaupaWalletProvider.PROVIDER_NAME,\n address: wallet.wallet.address_multiversx,\n }\n\n setWarpWalletInConfig(this.config, this.chain.name, walletDetails)\n this.cachedAddress = wallet.wallet.address_multiversx\n\n return walletDetails\n } catch (error) {\n throw new Error(`GaupaWalletProvider: Failed to generate wallet: ${error}`)\n }\n }\n\n private formatTransactionForApi(tx: Transaction) {\n const walletAddress = tx.sender.toBech32()\n return {\n walletAddress,\n send: false,\n relay: false,\n transaction: {\n sender: walletAddress,\n receiver: tx.receiver.toBech32(),\n value: tx.value.toString(),\n gasLimit: Number(tx.gasLimit),\n gasPrice: Number(tx.gasPrice),\n ...(tx.nonce !== undefined && { nonce: Number(tx.nonce) }),\n ...(tx.data?.length && { data: Buffer.from(tx.data).toString('base64') }),\n },\n }\n }\n}\n","import { WarpChainEnv } from '@joai/warps'\n\nexport const getGaupaApiUrl = (env: WarpChainEnv): string => {\n if (env === 'devnet') return 'https://devnet-login.gaupa.xyz'\n if (env === 'testnet') return 'https://testnet-login.gaupa.xyz'\n return 'https://login.gaupa.xyz'\n}\n","type CreateAgenticWalletRequest = { shard?: number; userId?: string }\ntype CreateAgenticWalletResponse = {\n success: boolean\n wallet: { address_multiversx: string; address_evm?: string; shard?: number | null }\n}\ntype SignMessageRequest = { message: string; walletAddress: string }\ntype SignMessageResponse = { address: string; signature: string; message: string; version: number; signer: string; txHash?: string }\ntype SignTransactionRequest = {\n userId?: string\n walletAddress?: string\n send?: boolean\n relay?: boolean\n transaction: {\n sender?: string\n receiver: string\n value: string\n data?: string\n gasLimit: number\n gasPrice: number\n nonce?: number\n }\n}\ntype SignTransactionResponse = {\n status: string\n data: {\n transaction: {\n nonce: number\n value: string\n receiver: string\n sender: string\n gasPrice: number\n gasLimit: number\n chainID: string\n version: number\n signature: string\n }\n sender: string\n receiver: string\n timestamp: string\n }\n}\n\nexport class GaupaApiClient {\n private readonly publicKey: string\n private readonly apiKey: string\n private readonly baseUrl: string\n\n constructor(publicKey: string, apiKey: string, apiUrl: string) {\n this.publicKey = publicKey\n this.apiKey = apiKey\n this.baseUrl = apiUrl.replace(/\\/$/, '')\n }\n\n async createAgenticWallet(request: CreateAgenticWalletRequest): Promise<CreateAgenticWalletResponse> {\n return this.request<CreateAgenticWalletResponse>('/manage/create-agentic-wallet', {\n method: 'POST',\n body: JSON.stringify(request),\n })\n }\n\n async signTransaction(request: SignTransactionRequest): Promise<SignTransactionResponse> {\n return await this.request<SignTransactionResponse>('/manage/submit-agentic-transaction', {\n method: 'POST',\n body: JSON.stringify(request),\n })\n }\n\n async signMessage(request: SignMessageRequest): Promise<SignMessageResponse> {\n return this.request<SignMessageResponse>('/manage/sign-agentic-message', {\n method: 'POST',\n body: JSON.stringify(request),\n })\n }\n\n private async request<T>(endpoint: string, options: RequestInit = {}): Promise<T> {\n const url = `${this.baseUrl}${endpoint}`\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n 'x-api-key': this.apiKey,\n 'Public-Key': this.publicKey,\n }\n\n const response = await fetch(url, {\n ...options,\n headers,\n })\n\n const responseStatus = response.status\n let responseBody: string | undefined\n\n try {\n responseBody = await response.text()\n } catch (error) {\n responseBody = `Failed to read response body: ${error}`\n }\n\n if (!response.ok) {\n throw new Error(`Gaupa API error (${responseStatus}): ${responseBody || 'Unknown error'}`)\n }\n\n try {\n return JSON.parse(responseBody || '{}')\n } catch (error) {\n throw new Error(`Failed to parse response JSON: ${error}. Response: ${responseBody}`)\n }\n }\n}\n","import { WalletProviderFactory, WarpChainInfo, WarpClientConfig } from '@joai/warps'\nimport { GaupaWalletProvider } from './GaupaWalletProvider'\nimport { ProviderConfig } from './types'\n\nexport const createGaupaWalletProvider = (gaupaConfig: ProviderConfig): WalletProviderFactory => {\n return (config: WarpClientConfig, chain: WarpChainInfo) => new GaupaWalletProvider(config, chain, gaupaConfig)\n}\n"],"mappings":"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","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@joai/warps-wallet-gaupa",
3
- "version": "1.0.0-beta.11",
3
+ "version": "1.0.0-beta.12",
4
4
  "description": "Gaupa wallet provider for multiple chains",
5
5
  "type": "module",
6
6
  "types": "./dist/index.d.ts",