@joai/warps-wallet-gaupa 1.0.0 → 1.0.1

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.js CHANGED
@@ -160,7 +160,9 @@ var _GaupaWalletProvider = class _GaupaWalletProvider {
160
160
  }
161
161
  }
162
162
  getWalletForChainOrFail(wallet) {
163
- if (this.chain.name === import_warps.WarpChainName.Multiversx && wallet.address_multiversx) return wallet.address_multiversx;
163
+ if ((this.chain.name === import_warps.WarpChainName.Multiversx || this.chain.name === import_warps.WarpChainName.Claws) && wallet.address_multiversx) {
164
+ return wallet.address_multiversx;
165
+ }
164
166
  if (import_warps.EvmWalletChainNames.includes(this.chain.name) && wallet.address_evm) return wallet.address_evm;
165
167
  throw new Error(`GaupaWalletProvider: Unsupported chain: ${this.chain.name}`);
166
168
  }
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 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({\n email: this.config.user.email,\n name: this.config.user?.name || undefined,\n })\n\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":[]}
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({\n email: this.config.user.email,\n name: this.config.user?.name || undefined,\n })\n\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 (\n (this.chain.name === WarpChainName.Multiversx || this.chain.name === WarpChainName.Claws) &&\n wallet.address_multiversx\n ) {\n return wallet.address_multiversx\n }\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
@@ -138,7 +138,9 @@ var _GaupaWalletProvider = class _GaupaWalletProvider {
138
138
  }
139
139
  }
140
140
  getWalletForChainOrFail(wallet) {
141
- if (this.chain.name === WarpChainName.Multiversx && wallet.address_multiversx) return wallet.address_multiversx;
141
+ if ((this.chain.name === WarpChainName.Multiversx || this.chain.name === WarpChainName.Claws) && wallet.address_multiversx) {
142
+ return wallet.address_multiversx;
143
+ }
142
144
  if (EvmWalletChainNames.includes(this.chain.name) && wallet.address_evm) return wallet.address_evm;
143
145
  throw new Error(`GaupaWalletProvider: Unsupported chain: ${this.chain.name}`);
144
146
  }
@@ -1 +1 @@
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({\n email: this.config.user.email,\n name: this.config.user?.name || undefined,\n })\n\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":[]}
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({\n email: this.config.user.email,\n name: this.config.user?.name || undefined,\n })\n\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 (\n (this.chain.name === WarpChainName.Multiversx || this.chain.name === WarpChainName.Claws) &&\n wallet.address_multiversx\n ) {\n return wallet.address_multiversx\n }\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",
3
+ "version": "1.0.1",
4
4
  "description": "Gaupa wallet provider for multiple chains",
5
5
  "type": "module",
6
6
  "types": "./dist/index.d.ts",
@@ -34,6 +34,6 @@
34
34
  "access": "public"
35
35
  },
36
36
  "dependencies": {
37
- "@joai/warps": "^3.0.0"
37
+ "@joai/warps": "^3.1.0"
38
38
  }
39
39
  }