@joai/warps-wallet-gaupa 1.0.0-beta.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +87 -0
- package/dist/index.d.cts +30 -0
- package/dist/index.d.ts +30 -0
- package/dist/index.js +168 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +143 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +39 -0
package/README.md
ADDED
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# @joai/warps-wallet-gaupa
|
|
2
|
+
|
|
3
|
+
Gaupa wallet provider for Warps SDK. This package enables you to use Gaupa agentic wallets with the Warps SDK.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @joai/warps-wallet-gaupa
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Prerequisites
|
|
12
|
+
|
|
13
|
+
- `@joai/warps` core package installed
|
|
14
|
+
- Appropriate chain adapter package(s) for your target blockchain(s)
|
|
15
|
+
- Gaupa API credentials (API key and public key)
|
|
16
|
+
|
|
17
|
+
## Usage
|
|
18
|
+
|
|
19
|
+
```typescript
|
|
20
|
+
import { createGaupaWalletProvider } from '@joai/warps-wallet-gaupa'
|
|
21
|
+
import { WarpClient } from '@joai/warps'
|
|
22
|
+
import { getAllChainAdapters } from '@joai/warps-adapter-<chain>'
|
|
23
|
+
|
|
24
|
+
const config = {
|
|
25
|
+
env: 'devnet', // or 'mainnet'
|
|
26
|
+
walletProviders: {
|
|
27
|
+
<chain>: {
|
|
28
|
+
gaupa: createGaupaWalletProvider({
|
|
29
|
+
apiKey: 'your-api-key',
|
|
30
|
+
publicKey: 'your-public-key',
|
|
31
|
+
}),
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
const client = new WarpClient(config, {
|
|
37
|
+
chains: getAllChainAdapters(),
|
|
38
|
+
})
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## API
|
|
42
|
+
|
|
43
|
+
### `GaupaWalletProvider`
|
|
44
|
+
|
|
45
|
+
Implements the `WalletProvider` interface from `@joai/warps`.
|
|
46
|
+
|
|
47
|
+
**Methods:**
|
|
48
|
+
|
|
49
|
+
- `getAddress(): Promise<string | null>` - Get the wallet address from configuration
|
|
50
|
+
- `getPublicKey(): Promise<string | null>` - Derive public key from the wallet address
|
|
51
|
+
- `signTransaction(tx: Transaction): Promise<Transaction>` - Sign a transaction using the Gaupa API's `sign-agentic-message` endpoint. The transaction is serialized as JSON and signed as a message.
|
|
52
|
+
- `signMessage(message: string): Promise<string>` - Sign a message using the Gaupa API
|
|
53
|
+
- `generate(): Promise<WarpWalletDetails>` - Create a new agentic wallet via the Gaupa API
|
|
54
|
+
|
|
55
|
+
**Unsupported Methods:**
|
|
56
|
+
|
|
57
|
+
- `importFromMnemonic()` - Not supported. Use `generate()` to create wallets via Gaupa API.
|
|
58
|
+
- `importFromPrivateKey()` - Not supported. Use `generate()` to create wallets via Gaupa API.
|
|
59
|
+
- `export()` - Not supported. Private keys are managed by Gaupa and cannot be exported.
|
|
60
|
+
|
|
61
|
+
## How It Works
|
|
62
|
+
|
|
63
|
+
1. **API Configuration**: The API URL is automatically configured based on the environment:
|
|
64
|
+
- `devnet`: `https://devnet-login.gaupa.xyz/api`
|
|
65
|
+
- `mainnet` or other: `https://login.gaupa.xyz/api`
|
|
66
|
+
|
|
67
|
+
2. **Wallet Creation**: Use `generate()` to create a new agentic wallet via the Gaupa API. The wallet address is stored in your Warps configuration.
|
|
68
|
+
|
|
69
|
+
3. **Transaction Signing**: When signing a transaction, the provider:
|
|
70
|
+
- Serializes the transaction data as JSON
|
|
71
|
+
- Calls the Gaupa API's `sign-agentic-message` endpoint with the serialized transaction
|
|
72
|
+
- Converts the returned hex signature to a `Uint8Array` and applies it to the transaction
|
|
73
|
+
|
|
74
|
+
4. **Message Signing**: Messages are signed directly via the `sign-agentic-message` endpoint.
|
|
75
|
+
|
|
76
|
+
## Configuration
|
|
77
|
+
|
|
78
|
+
The wallet configuration is stored in your Warps config under `user.wallets.<chain>`:
|
|
79
|
+
|
|
80
|
+
```json
|
|
81
|
+
{
|
|
82
|
+
"provider": "gaupa",
|
|
83
|
+
"address": "erd1..."
|
|
84
|
+
}
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
The address is set automatically when you call `generate()` or can be configured manually.
|
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Transaction } from '@multiversx/sdk-core';
|
|
2
|
+
import { WalletProvider, WarpWalletProvider, WarpClientConfig, WarpChainInfo, WarpWalletDetails, WalletProviderFactory } from '@joai/warps';
|
|
3
|
+
|
|
4
|
+
type ProviderConfig = {
|
|
5
|
+
apiKey: string;
|
|
6
|
+
publicKey: string;
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
declare class GaupaWalletProvider implements WalletProvider {
|
|
10
|
+
private readonly config;
|
|
11
|
+
private readonly chain;
|
|
12
|
+
private readonly gaupaConfig;
|
|
13
|
+
static readonly PROVIDER_NAME: WarpWalletProvider;
|
|
14
|
+
private readonly client;
|
|
15
|
+
private cachedAddress;
|
|
16
|
+
constructor(config: WarpClientConfig, chain: WarpChainInfo, gaupaConfig: ProviderConfig);
|
|
17
|
+
getAddress(): Promise<string | null>;
|
|
18
|
+
getPublicKey(): Promise<string | null>;
|
|
19
|
+
signTransaction(tx: Transaction): Promise<Transaction>;
|
|
20
|
+
signMessage(message: string): Promise<string>;
|
|
21
|
+
importFromMnemonic(mnemonic: string): Promise<WarpWalletDetails>;
|
|
22
|
+
importFromPrivateKey(privateKey: string): Promise<WarpWalletDetails>;
|
|
23
|
+
export(): Promise<WarpWalletDetails>;
|
|
24
|
+
generate(): Promise<WarpWalletDetails>;
|
|
25
|
+
private formatTransactionForApi;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
declare const createGaupaWalletProvider: (gaupaConfig: ProviderConfig) => WalletProviderFactory;
|
|
29
|
+
|
|
30
|
+
export { GaupaWalletProvider, type ProviderConfig, createGaupaWalletProvider };
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Transaction } from '@multiversx/sdk-core';
|
|
2
|
+
import { WalletProvider, WarpWalletProvider, WarpClientConfig, WarpChainInfo, WarpWalletDetails, WalletProviderFactory } from '@joai/warps';
|
|
3
|
+
|
|
4
|
+
type ProviderConfig = {
|
|
5
|
+
apiKey: string;
|
|
6
|
+
publicKey: string;
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
declare class GaupaWalletProvider implements WalletProvider {
|
|
10
|
+
private readonly config;
|
|
11
|
+
private readonly chain;
|
|
12
|
+
private readonly gaupaConfig;
|
|
13
|
+
static readonly PROVIDER_NAME: WarpWalletProvider;
|
|
14
|
+
private readonly client;
|
|
15
|
+
private cachedAddress;
|
|
16
|
+
constructor(config: WarpClientConfig, chain: WarpChainInfo, gaupaConfig: ProviderConfig);
|
|
17
|
+
getAddress(): Promise<string | null>;
|
|
18
|
+
getPublicKey(): Promise<string | null>;
|
|
19
|
+
signTransaction(tx: Transaction): Promise<Transaction>;
|
|
20
|
+
signMessage(message: string): Promise<string>;
|
|
21
|
+
importFromMnemonic(mnemonic: string): Promise<WarpWalletDetails>;
|
|
22
|
+
importFromPrivateKey(privateKey: string): Promise<WarpWalletDetails>;
|
|
23
|
+
export(): Promise<WarpWalletDetails>;
|
|
24
|
+
generate(): Promise<WarpWalletDetails>;
|
|
25
|
+
private formatTransactionForApi;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
declare const createGaupaWalletProvider: (gaupaConfig: ProviderConfig) => WalletProviderFactory;
|
|
29
|
+
|
|
30
|
+
export { GaupaWalletProvider, type ProviderConfig, createGaupaWalletProvider };
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/index.ts
|
|
21
|
+
var index_exports = {};
|
|
22
|
+
__export(index_exports, {
|
|
23
|
+
GaupaWalletProvider: () => GaupaWalletProvider,
|
|
24
|
+
createGaupaWalletProvider: () => createGaupaWalletProvider
|
|
25
|
+
});
|
|
26
|
+
module.exports = __toCommonJS(index_exports);
|
|
27
|
+
|
|
28
|
+
// src/GaupaWalletProvider.ts
|
|
29
|
+
var import_sdk_core = require("@multiversx/sdk-core");
|
|
30
|
+
var import_warps = require("@joai/warps");
|
|
31
|
+
|
|
32
|
+
// src/config.ts
|
|
33
|
+
var getGaupaApiUrl = (env) => {
|
|
34
|
+
if (env === "devnet") return "https://devnet-login.gaupa.xyz/api";
|
|
35
|
+
return "https://login.gaupa.xyz/api";
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
// src/GaupaApiClient.ts
|
|
39
|
+
var GaupaApiClient = class {
|
|
40
|
+
constructor(apiKey, apiUrl, publicKey) {
|
|
41
|
+
this.apiKey = apiKey;
|
|
42
|
+
this.publicKey = publicKey;
|
|
43
|
+
this.baseUrl = apiUrl.replace(/\/$/, "");
|
|
44
|
+
}
|
|
45
|
+
async createAgenticWallet(request) {
|
|
46
|
+
return this.request("/manage/create-agentic-wallet", {
|
|
47
|
+
method: "POST",
|
|
48
|
+
body: JSON.stringify(request)
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
async signMessage(request) {
|
|
52
|
+
return this.request("/manage/sign-agentic-message", {
|
|
53
|
+
method: "POST",
|
|
54
|
+
body: JSON.stringify(request)
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
async request(endpoint, options = {}) {
|
|
58
|
+
const url = `${this.baseUrl}${endpoint}`;
|
|
59
|
+
const headers = {
|
|
60
|
+
"Content-Type": "application/json",
|
|
61
|
+
"x-api-key": this.apiKey,
|
|
62
|
+
"Public-Key": this.publicKey
|
|
63
|
+
};
|
|
64
|
+
const response = await fetch(url, {
|
|
65
|
+
...options,
|
|
66
|
+
headers
|
|
67
|
+
});
|
|
68
|
+
if (!response.ok) {
|
|
69
|
+
const errorText = await response.text().catch(() => "Unknown error");
|
|
70
|
+
throw new Error(`Gaupa API error (${response.status}): ${errorText}`);
|
|
71
|
+
}
|
|
72
|
+
return response.json();
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
// src/GaupaWalletProvider.ts
|
|
77
|
+
var _GaupaWalletProvider = class _GaupaWalletProvider {
|
|
78
|
+
constructor(config, chain, gaupaConfig) {
|
|
79
|
+
this.config = config;
|
|
80
|
+
this.chain = chain;
|
|
81
|
+
this.gaupaConfig = gaupaConfig;
|
|
82
|
+
this.cachedAddress = null;
|
|
83
|
+
const apiUrl = getGaupaApiUrl(config.env);
|
|
84
|
+
this.client = new GaupaApiClient(gaupaConfig.apiKey, apiUrl, gaupaConfig.publicKey);
|
|
85
|
+
}
|
|
86
|
+
async getAddress() {
|
|
87
|
+
if (this.cachedAddress) return this.cachedAddress;
|
|
88
|
+
const address = (0, import_warps.getWarpWalletAddressFromConfig)(this.config, this.chain.name);
|
|
89
|
+
if (!address) return null;
|
|
90
|
+
this.cachedAddress = address;
|
|
91
|
+
return address;
|
|
92
|
+
}
|
|
93
|
+
async getPublicKey() {
|
|
94
|
+
const address = await this.getAddress();
|
|
95
|
+
if (!address) return null;
|
|
96
|
+
const pubKey = import_sdk_core.Address.newFromBech32(address).getPublicKey().toString("hex");
|
|
97
|
+
return pubKey;
|
|
98
|
+
}
|
|
99
|
+
async signTransaction(tx) {
|
|
100
|
+
const walletAddress = await this.getAddress();
|
|
101
|
+
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"));
|
|
109
|
+
return tx;
|
|
110
|
+
}
|
|
111
|
+
async signMessage(message) {
|
|
112
|
+
const walletAddress = await this.getAddress();
|
|
113
|
+
if (!walletAddress) throw new Error("GaupaWalletProvider: Wallet address not found");
|
|
114
|
+
const result = await this.client.signMessage({
|
|
115
|
+
message,
|
|
116
|
+
walletAddress
|
|
117
|
+
});
|
|
118
|
+
if (!result.signature) throw new Error("Gaupa API did not return signature");
|
|
119
|
+
return result.signature;
|
|
120
|
+
}
|
|
121
|
+
async importFromMnemonic(mnemonic) {
|
|
122
|
+
throw new Error("GaupaWalletProvider: importFromMnemonic() is not supported. Use generate() to create a new wallet via Gaupa API.");
|
|
123
|
+
}
|
|
124
|
+
async importFromPrivateKey(privateKey) {
|
|
125
|
+
throw new Error("GaupaWalletProvider: importFromPrivateKey() is not supported. Use generate() to create a new wallet via Gaupa API.");
|
|
126
|
+
}
|
|
127
|
+
async export() {
|
|
128
|
+
throw new Error("GaupaWalletProvider: export() is not supported. Private keys are managed by Gaupa and cannot be exported.");
|
|
129
|
+
}
|
|
130
|
+
async generate() {
|
|
131
|
+
try {
|
|
132
|
+
const wallet = await this.client.createAgenticWallet({});
|
|
133
|
+
if (!wallet.success || !wallet.wallet.address_multiversx) throw new Error("Gaupa API did not return a valid wallet");
|
|
134
|
+
const walletDetails = {
|
|
135
|
+
provider: _GaupaWalletProvider.PROVIDER_NAME,
|
|
136
|
+
address: wallet.wallet.address_multiversx
|
|
137
|
+
};
|
|
138
|
+
(0, import_warps.setWarpWalletInConfig)(this.config, this.chain.name, walletDetails);
|
|
139
|
+
this.cachedAddress = wallet.wallet.address_multiversx;
|
|
140
|
+
return walletDetails;
|
|
141
|
+
} catch (error) {
|
|
142
|
+
throw new Error(`GaupaWalletProvider: Failed to generate wallet: ${error}`);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
formatTransactionForApi(tx) {
|
|
146
|
+
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) }
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
};
|
|
156
|
+
_GaupaWalletProvider.PROVIDER_NAME = "gaupa";
|
|
157
|
+
var GaupaWalletProvider = _GaupaWalletProvider;
|
|
158
|
+
|
|
159
|
+
// src/helpers.ts
|
|
160
|
+
var createGaupaWalletProvider = (gaupaConfig) => {
|
|
161
|
+
return (config, chain) => new GaupaWalletProvider(config, chain, gaupaConfig);
|
|
162
|
+
};
|
|
163
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
164
|
+
0 && (module.exports = {
|
|
165
|
+
GaupaWalletProvider,
|
|
166
|
+
createGaupaWalletProvider
|
|
167
|
+
});
|
|
168
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +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":[]}
|
package/dist/index.mjs
ADDED
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
// src/GaupaWalletProvider.ts
|
|
2
|
+
import { Address } from "@multiversx/sdk-core";
|
|
3
|
+
import {
|
|
4
|
+
getWarpWalletAddressFromConfig,
|
|
5
|
+
setWarpWalletInConfig
|
|
6
|
+
} from "@joai/warps";
|
|
7
|
+
|
|
8
|
+
// src/config.ts
|
|
9
|
+
var getGaupaApiUrl = (env) => {
|
|
10
|
+
if (env === "devnet") return "https://devnet-login.gaupa.xyz/api";
|
|
11
|
+
return "https://login.gaupa.xyz/api";
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
// src/GaupaApiClient.ts
|
|
15
|
+
var GaupaApiClient = class {
|
|
16
|
+
constructor(apiKey, apiUrl, publicKey) {
|
|
17
|
+
this.apiKey = apiKey;
|
|
18
|
+
this.publicKey = publicKey;
|
|
19
|
+
this.baseUrl = apiUrl.replace(/\/$/, "");
|
|
20
|
+
}
|
|
21
|
+
async createAgenticWallet(request) {
|
|
22
|
+
return this.request("/manage/create-agentic-wallet", {
|
|
23
|
+
method: "POST",
|
|
24
|
+
body: JSON.stringify(request)
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
async signMessage(request) {
|
|
28
|
+
return this.request("/manage/sign-agentic-message", {
|
|
29
|
+
method: "POST",
|
|
30
|
+
body: JSON.stringify(request)
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
async request(endpoint, options = {}) {
|
|
34
|
+
const url = `${this.baseUrl}${endpoint}`;
|
|
35
|
+
const headers = {
|
|
36
|
+
"Content-Type": "application/json",
|
|
37
|
+
"x-api-key": this.apiKey,
|
|
38
|
+
"Public-Key": this.publicKey
|
|
39
|
+
};
|
|
40
|
+
const response = await fetch(url, {
|
|
41
|
+
...options,
|
|
42
|
+
headers
|
|
43
|
+
});
|
|
44
|
+
if (!response.ok) {
|
|
45
|
+
const errorText = await response.text().catch(() => "Unknown error");
|
|
46
|
+
throw new Error(`Gaupa API error (${response.status}): ${errorText}`);
|
|
47
|
+
}
|
|
48
|
+
return response.json();
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
// src/GaupaWalletProvider.ts
|
|
53
|
+
var _GaupaWalletProvider = class _GaupaWalletProvider {
|
|
54
|
+
constructor(config, chain, gaupaConfig) {
|
|
55
|
+
this.config = config;
|
|
56
|
+
this.chain = chain;
|
|
57
|
+
this.gaupaConfig = gaupaConfig;
|
|
58
|
+
this.cachedAddress = null;
|
|
59
|
+
const apiUrl = getGaupaApiUrl(config.env);
|
|
60
|
+
this.client = new GaupaApiClient(gaupaConfig.apiKey, apiUrl, gaupaConfig.publicKey);
|
|
61
|
+
}
|
|
62
|
+
async getAddress() {
|
|
63
|
+
if (this.cachedAddress) return this.cachedAddress;
|
|
64
|
+
const address = getWarpWalletAddressFromConfig(this.config, this.chain.name);
|
|
65
|
+
if (!address) return null;
|
|
66
|
+
this.cachedAddress = address;
|
|
67
|
+
return address;
|
|
68
|
+
}
|
|
69
|
+
async getPublicKey() {
|
|
70
|
+
const address = await this.getAddress();
|
|
71
|
+
if (!address) return null;
|
|
72
|
+
const pubKey = Address.newFromBech32(address).getPublicKey().toString("hex");
|
|
73
|
+
return pubKey;
|
|
74
|
+
}
|
|
75
|
+
async signTransaction(tx) {
|
|
76
|
+
const walletAddress = await this.getAddress();
|
|
77
|
+
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"));
|
|
85
|
+
return tx;
|
|
86
|
+
}
|
|
87
|
+
async signMessage(message) {
|
|
88
|
+
const walletAddress = await this.getAddress();
|
|
89
|
+
if (!walletAddress) throw new Error("GaupaWalletProvider: Wallet address not found");
|
|
90
|
+
const result = await this.client.signMessage({
|
|
91
|
+
message,
|
|
92
|
+
walletAddress
|
|
93
|
+
});
|
|
94
|
+
if (!result.signature) throw new Error("Gaupa API did not return signature");
|
|
95
|
+
return result.signature;
|
|
96
|
+
}
|
|
97
|
+
async importFromMnemonic(mnemonic) {
|
|
98
|
+
throw new Error("GaupaWalletProvider: importFromMnemonic() is not supported. Use generate() to create a new wallet via Gaupa API.");
|
|
99
|
+
}
|
|
100
|
+
async importFromPrivateKey(privateKey) {
|
|
101
|
+
throw new Error("GaupaWalletProvider: importFromPrivateKey() is not supported. Use generate() to create a new wallet via Gaupa API.");
|
|
102
|
+
}
|
|
103
|
+
async export() {
|
|
104
|
+
throw new Error("GaupaWalletProvider: export() is not supported. Private keys are managed by Gaupa and cannot be exported.");
|
|
105
|
+
}
|
|
106
|
+
async generate() {
|
|
107
|
+
try {
|
|
108
|
+
const wallet = await this.client.createAgenticWallet({});
|
|
109
|
+
if (!wallet.success || !wallet.wallet.address_multiversx) throw new Error("Gaupa API did not return a valid wallet");
|
|
110
|
+
const walletDetails = {
|
|
111
|
+
provider: _GaupaWalletProvider.PROVIDER_NAME,
|
|
112
|
+
address: wallet.wallet.address_multiversx
|
|
113
|
+
};
|
|
114
|
+
setWarpWalletInConfig(this.config, this.chain.name, walletDetails);
|
|
115
|
+
this.cachedAddress = wallet.wallet.address_multiversx;
|
|
116
|
+
return walletDetails;
|
|
117
|
+
} catch (error) {
|
|
118
|
+
throw new Error(`GaupaWalletProvider: Failed to generate wallet: ${error}`);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
formatTransactionForApi(tx) {
|
|
122
|
+
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) }
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
};
|
|
132
|
+
_GaupaWalletProvider.PROVIDER_NAME = "gaupa";
|
|
133
|
+
var GaupaWalletProvider = _GaupaWalletProvider;
|
|
134
|
+
|
|
135
|
+
// src/helpers.ts
|
|
136
|
+
var createGaupaWalletProvider = (gaupaConfig) => {
|
|
137
|
+
return (config, chain) => new GaupaWalletProvider(config, chain, gaupaConfig);
|
|
138
|
+
};
|
|
139
|
+
export {
|
|
140
|
+
GaupaWalletProvider,
|
|
141
|
+
createGaupaWalletProvider
|
|
142
|
+
};
|
|
143
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +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":[]}
|
package/package.json
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@joai/warps-wallet-gaupa",
|
|
3
|
+
"version": "1.0.0-beta.11",
|
|
4
|
+
"description": "Gaupa wallet provider for multiple chains",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"types": "./dist/index.d.ts",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"import": "./dist/index.mjs",
|
|
11
|
+
"require": "./dist/index.js",
|
|
12
|
+
"default": "./dist/index.mjs"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"scripts": {
|
|
16
|
+
"build": "tsup",
|
|
17
|
+
"test": "jest --config jest.config.mjs",
|
|
18
|
+
"lint": "tsc --noEmit",
|
|
19
|
+
"preversion": "npm run lint && npm run build"
|
|
20
|
+
},
|
|
21
|
+
"author": "",
|
|
22
|
+
"license": "MIT",
|
|
23
|
+
"files": [
|
|
24
|
+
"dist"
|
|
25
|
+
],
|
|
26
|
+
"devDependencies": {
|
|
27
|
+
"@types/jest": "^30.0.0",
|
|
28
|
+
"jest": "^30.2.0",
|
|
29
|
+
"ts-jest": "^29.4.6",
|
|
30
|
+
"tsup": "^8.5.1",
|
|
31
|
+
"typescript": "^5.9.3"
|
|
32
|
+
},
|
|
33
|
+
"publishConfig": {
|
|
34
|
+
"access": "public"
|
|
35
|
+
},
|
|
36
|
+
"dependencies": {
|
|
37
|
+
"@joai/warps": "^3.0.0-beta.198"
|
|
38
|
+
}
|
|
39
|
+
}
|