@hot-labs/kit 1.0.51 → 1.0.52

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.
@@ -25,7 +25,7 @@ export class Token {
25
25
  this.originalAddress = this.address;
26
26
  }
27
27
  else {
28
- this.address = info.omni ? info.assetId : info.contractAddress || "native";
28
+ this.address = info.contractAddress || "native";
29
29
  this.originalAddress = info.contractAddress || "native";
30
30
  }
31
31
  if (info.omni) {
@@ -1 +1 @@
1
- {"version":3,"file":"token.js","sourceRoot":"","sources":["../../src/core/token.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"token.js","sourceRoot":"","sources":["../../src/core/token.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hot-labs/kit",
3
- "version": "1.0.51",
3
+ "version": "1.0.52",
4
4
  "description": "HOT Labs Kit is chain agnostic connector with omni payments",
5
5
  "license": "ISC",
6
6
  "author": "",
package/skill.md CHANGED
@@ -117,6 +117,133 @@ const stellarWallet = wibe3.stellar;
117
117
  const priorityWallet = wibe3.priorityWallet;
118
118
  ```
119
119
 
120
+ ### JWT Authentication
121
+
122
+ The `auth()` method allows you to authenticate a wallet and receive a JWT token. This is useful for backend authentication and verifying wallet ownership.
123
+
124
+ **How it works:**
125
+
126
+ 1. Opens a UI popup asking the user to sign a message
127
+ 2. Generates a random seed and creates a cryptographic nonce
128
+ 3. Signs intents (or empty array) with the nonce
129
+ 4. Sends the signed commitment to the API
130
+ 5. Returns a JWT token string
131
+
132
+ **Basic Usage:**
133
+
134
+ ```typescript
135
+ // Get JWT token for authentication
136
+ const wallet = wibe3.priorityWallet; // or any connected wallet
137
+ if (wallet) {
138
+ const jwt = await wallet.auth();
139
+ console.log("JWT token:", jwt);
140
+
141
+ // Use JWT for backend authentication
142
+ // Example: send to your backend API
143
+ await fetch("https://your-api.com/authenticate", {
144
+ method: "POST",
145
+ headers: {
146
+ "Authorization": `Bearer ${jwt}`,
147
+ "Content-Type": "application/json",
148
+ },
149
+ });
150
+ }
151
+ ```
152
+
153
+ **Auth with Intents (Optional):**
154
+
155
+ You can optionally pass intents to be signed during authentication:
156
+
157
+ ```typescript
158
+ const wallet = wibe3.priorityWallet;
159
+ if (wallet) {
160
+ // Auth with intents (optional)
161
+ const intents = [
162
+ {
163
+ intent: "transfer",
164
+ recipient: "petya.near",
165
+ token: OmniToken.USDC,
166
+ amount: 10,
167
+ },
168
+ ];
169
+
170
+ const jwt = await wallet.auth(intents);
171
+ console.log("JWT with signed intents:", jwt);
172
+ }
173
+ ```
174
+
175
+ **Validate JWT Token:**
176
+
177
+ You can validate a JWT token using the API:
178
+
179
+ ```typescript
180
+ import { api } from "@hot-labs/kit";
181
+
182
+ // Validate JWT token
183
+ const isValid = await api.validateAuth(jwt);
184
+ console.log("Token is valid:", isValid);
185
+ ```
186
+
187
+ **Complete Example:**
188
+
189
+ ```typescript
190
+ import { observer } from "mobx-react-lite";
191
+ import { HotConnector } from "@hot-labs/kit";
192
+
193
+ const wibe3 = new HotConnector({
194
+ // ... configuration
195
+ });
196
+
197
+ const App = observer(() => {
198
+ const handleAuthenticate = async () => {
199
+ const wallet = wibe3.priorityWallet;
200
+ if (!wallet) {
201
+ alert("Please connect a wallet first");
202
+ return;
203
+ }
204
+
205
+ try {
206
+ // Get JWT token
207
+ const jwt = await wallet.auth();
208
+
209
+ // Store JWT (e.g., in localStorage or send to backend)
210
+ localStorage.setItem("authToken", jwt);
211
+
212
+ // Use JWT for authenticated API calls
213
+ const response = await fetch("https://your-api.com/user/profile", {
214
+ headers: {
215
+ "Authorization": `Bearer ${jwt}`,
216
+ },
217
+ });
218
+
219
+ const userData = await response.json();
220
+ console.log("User data:", userData);
221
+
222
+ alert("Authentication successful!");
223
+ } catch (error) {
224
+ console.error("Authentication failed:", error);
225
+ alert("Authentication failed");
226
+ }
227
+ };
228
+
229
+ return (
230
+ <div>
231
+ <button onClick={handleAuthenticate}>
232
+ Authenticate & Get JWT
233
+ </button>
234
+ </div>
235
+ );
236
+ });
237
+ ```
238
+
239
+ **Important Notes:**
240
+
241
+ - The `auth()` method opens a UI popup that requires user interaction to sign the message
242
+ - The JWT token is generated server-side and returned after successful signature verification
243
+ - The token can be used for backend authentication to verify wallet ownership
244
+ - The authentication process is safe - it only signs a message, not a transaction
245
+ - You can optionally pass intents to be signed during authentication
246
+
120
247
  ### Working with Tokens
121
248
 
122
249
  ```typescript
package/src/core/token.ts CHANGED
@@ -33,7 +33,7 @@ export class Token {
33
33
  this.address = info.contractAddress ? new Asset(info.symbol, info.contractAddress).contractId(Networks.PUBLIC) : "native";
34
34
  this.originalAddress = this.address;
35
35
  } else {
36
- this.address = info.omni ? info.assetId : info.contractAddress || "native";
36
+ this.address = info.contractAddress || "native";
37
37
  this.originalAddress = info.contractAddress || "native";
38
38
  }
39
39