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

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
@@ -22,6 +22,7 @@ declare class GaupaWalletProvider implements WalletProvider {
22
22
  importFromPrivateKey(privateKey: string): Promise<WarpWalletDetails>;
23
23
  export(): Promise<WarpWalletDetails>;
24
24
  generate(): Promise<WarpWalletDetails>;
25
+ private getWalletForChainOrFail;
25
26
  private formatTransactionForApi;
26
27
  }
27
28
 
package/dist/index.d.ts CHANGED
@@ -22,6 +22,7 @@ declare class GaupaWalletProvider implements WalletProvider {
22
22
  importFromPrivateKey(privateKey: string): Promise<WarpWalletDetails>;
23
23
  export(): Promise<WarpWalletDetails>;
24
24
  generate(): Promise<WarpWalletDetails>;
25
+ private getWalletForChainOrFail;
25
26
  private formatTransactionForApi;
26
27
  }
27
28
 
package/dist/index.js CHANGED
@@ -138,20 +138,29 @@ var _GaupaWalletProvider = class _GaupaWalletProvider {
138
138
  throw new Error("GaupaWalletProvider: export() is not supported. Private keys are managed by Gaupa and cannot be exported.");
139
139
  }
140
140
  async generate() {
141
+ if (!this.config.user?.email) throw new Error("GaupaWalletProvider: Email is required to generate a wallet");
141
142
  try {
142
- const wallet = await this.client.createAgenticWallet({});
143
- if (!wallet.success || !wallet.wallet.address_multiversx) throw new Error("Gaupa API did not return a valid wallet");
143
+ const remoteWallet = await this.client.createAgenticWallet({ email: this.config.user.email, name: this.config.user.name });
144
+ if (!remoteWallet.success) throw new Error("Gaupa API did not return a valid wallet");
145
+ const address = this.getWalletForChainOrFail(remoteWallet.wallet);
146
+ if (!address) throw new Error("Gaupa API did not return a valid wallet");
144
147
  const walletDetails = {
145
148
  provider: _GaupaWalletProvider.PROVIDER_NAME,
146
- address: wallet.wallet.address_multiversx
149
+ address,
150
+ externalId: remoteWallet.userId
147
151
  };
148
152
  (0, import_warps.setWarpWalletInConfig)(this.config, this.chain.name, walletDetails);
149
- this.cachedAddress = wallet.wallet.address_multiversx;
153
+ this.cachedAddress = walletDetails.address;
150
154
  return walletDetails;
151
155
  } catch (error) {
152
156
  throw new Error(`GaupaWalletProvider: Failed to generate wallet: ${error}`);
153
157
  }
154
158
  }
159
+ getWalletForChainOrFail(wallet) {
160
+ if (this.chain.name === import_warps.WarpChainName.Multiversx && wallet.address_multiversx) return wallet.address_multiversx;
161
+ if (import_warps.EvmWalletChainNames.includes(this.chain.name) && wallet.address_evm) return wallet.address_evm;
162
+ throw new Error(`GaupaWalletProvider: Unsupported chain: ${this.chain.name}`);
163
+ }
155
164
  formatTransactionForApi(tx) {
156
165
  const walletAddress = tx.sender.toBech32();
157
166
  return {
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 {\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":[]}
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 EvmWalletChainNames,\n getWarpWalletAddressFromConfig,\n setWarpWalletInConfig,\n WalletProvider,\n WarpChainInfo,\n WarpChainName,\n WarpClientConfig,\n WarpWalletDetails,\n WarpWalletProvider,\n} from '@joai/warps'\nimport { Address, Transaction } from '@multiversx/sdk-core'\nimport { getGaupaApiUrl } from './config'\nimport { GaupaApiClient, WalletResponse } 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 if (!this.config.user?.email) throw new Error('GaupaWalletProvider: Email is required to generate a wallet')\n try {\n const remoteWallet = await this.client.createAgenticWallet({ email: this.config.user.email, name: this.config.user.name })\n if (!remoteWallet.success) throw new Error('Gaupa API did not return a valid wallet')\n const address = this.getWalletForChainOrFail(remoteWallet.wallet)\n if (!address) throw new Error('Gaupa API did not return a valid wallet')\n\n const walletDetails: WarpWalletDetails = {\n provider: GaupaWalletProvider.PROVIDER_NAME,\n address,\n externalId: remoteWallet.userId,\n }\n\n setWarpWalletInConfig(this.config, this.chain.name, walletDetails)\n this.cachedAddress = walletDetails.address\n\n return walletDetails\n } catch (error) {\n throw new Error(`GaupaWalletProvider: Failed to generate wallet: ${error}`)\n }\n }\n\n private getWalletForChainOrFail(wallet: WalletResponse): string {\n if (this.chain.name === WarpChainName.Multiversx && wallet.address_multiversx) return wallet.address_multiversx\n if (EvmWalletChainNames.includes(this.chain.name) && wallet.address_evm) return wallet.address_evm\n throw new Error(`GaupaWalletProvider: Unsupported chain: ${this.chain.name}`)\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 = { email: string; name?: string; shard?: number; userId?: string }\ntype CreateAgenticWalletResponse = {\n success: boolean\n userId: string\n wallet: WalletResponse\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}\nexport type WalletResponse = {\n address_multiversx: string\n address_evm?: string\n shard?: number | null\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,7 +1,9 @@
1
1
  // src/GaupaWalletProvider.ts
2
2
  import {
3
+ EvmWalletChainNames,
3
4
  getWarpWalletAddressFromConfig,
4
- setWarpWalletInConfig
5
+ setWarpWalletInConfig,
6
+ WarpChainName
5
7
  } from "@joai/warps";
6
8
  import { Address } from "@multiversx/sdk-core";
7
9
 
@@ -114,20 +116,29 @@ var _GaupaWalletProvider = class _GaupaWalletProvider {
114
116
  throw new Error("GaupaWalletProvider: export() is not supported. Private keys are managed by Gaupa and cannot be exported.");
115
117
  }
116
118
  async generate() {
119
+ if (!this.config.user?.email) throw new Error("GaupaWalletProvider: Email is required to generate a wallet");
117
120
  try {
118
- const wallet = await this.client.createAgenticWallet({});
119
- if (!wallet.success || !wallet.wallet.address_multiversx) throw new Error("Gaupa API did not return a valid wallet");
121
+ const remoteWallet = await this.client.createAgenticWallet({ email: this.config.user.email, name: this.config.user.name });
122
+ if (!remoteWallet.success) throw new Error("Gaupa API did not return a valid wallet");
123
+ const address = this.getWalletForChainOrFail(remoteWallet.wallet);
124
+ if (!address) throw new Error("Gaupa API did not return a valid wallet");
120
125
  const walletDetails = {
121
126
  provider: _GaupaWalletProvider.PROVIDER_NAME,
122
- address: wallet.wallet.address_multiversx
127
+ address,
128
+ externalId: remoteWallet.userId
123
129
  };
124
130
  setWarpWalletInConfig(this.config, this.chain.name, walletDetails);
125
- this.cachedAddress = wallet.wallet.address_multiversx;
131
+ this.cachedAddress = walletDetails.address;
126
132
  return walletDetails;
127
133
  } catch (error) {
128
134
  throw new Error(`GaupaWalletProvider: Failed to generate wallet: ${error}`);
129
135
  }
130
136
  }
137
+ getWalletForChainOrFail(wallet) {
138
+ if (this.chain.name === WarpChainName.Multiversx && wallet.address_multiversx) return wallet.address_multiversx;
139
+ if (EvmWalletChainNames.includes(this.chain.name) && wallet.address_evm) return wallet.address_evm;
140
+ throw new Error(`GaupaWalletProvider: Unsupported chain: ${this.chain.name}`);
141
+ }
131
142
  formatTransactionForApi(tx) {
132
143
  const walletAddress = tx.sender.toBech32();
133
144
  return {
@@ -1 +1 @@
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":[]}
1
+ {"version":3,"sources":["../src/GaupaWalletProvider.ts","../src/config.ts","../src/GaupaApiClient.ts","../src/helpers.ts"],"sourcesContent":["import {\n EvmWalletChainNames,\n getWarpWalletAddressFromConfig,\n setWarpWalletInConfig,\n WalletProvider,\n WarpChainInfo,\n WarpChainName,\n WarpClientConfig,\n WarpWalletDetails,\n WarpWalletProvider,\n} from '@joai/warps'\nimport { Address, Transaction } from '@multiversx/sdk-core'\nimport { getGaupaApiUrl } from './config'\nimport { GaupaApiClient, WalletResponse } 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 if (!this.config.user?.email) throw new Error('GaupaWalletProvider: Email is required to generate a wallet')\n try {\n const remoteWallet = await this.client.createAgenticWallet({ email: this.config.user.email, name: this.config.user.name })\n if (!remoteWallet.success) throw new Error('Gaupa API did not return a valid wallet')\n const address = this.getWalletForChainOrFail(remoteWallet.wallet)\n if (!address) throw new Error('Gaupa API did not return a valid wallet')\n\n const walletDetails: WarpWalletDetails = {\n provider: GaupaWalletProvider.PROVIDER_NAME,\n address,\n externalId: remoteWallet.userId,\n }\n\n setWarpWalletInConfig(this.config, this.chain.name, walletDetails)\n this.cachedAddress = walletDetails.address\n\n return walletDetails\n } catch (error) {\n throw new Error(`GaupaWalletProvider: Failed to generate wallet: ${error}`)\n }\n }\n\n private getWalletForChainOrFail(wallet: WalletResponse): string {\n if (this.chain.name === WarpChainName.Multiversx && wallet.address_multiversx) return wallet.address_multiversx\n if (EvmWalletChainNames.includes(this.chain.name) && wallet.address_evm) return wallet.address_evm\n throw new Error(`GaupaWalletProvider: Unsupported chain: ${this.chain.name}`)\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 = { email: string; name?: string; shard?: number; userId?: string }\ntype CreateAgenticWalletResponse = {\n success: boolean\n userId: string\n wallet: WalletResponse\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}\nexport type WalletResponse = {\n address_multiversx: string\n address_evm?: string\n shard?: number | null\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.12",
3
+ "version": "1.0.0-beta.13",
4
4
  "description": "Gaupa wallet provider for multiple chains",
5
5
  "type": "module",
6
6
  "types": "./dist/index.d.ts",