@loyal-labs/private-transactions 0.2.3 → 0.2.4

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.ts CHANGED
@@ -9,6 +9,7 @@
9
9
  * import { Keypair, PublicKey } from "@solana/web3.js";
10
10
  * import {
11
11
  * ER_VALIDATOR,
12
+ * ER_VALIDATOR_MAINNET,
12
13
  * LoyalPrivateTransactionsClient,
13
14
  * MAGIC_CONTEXT_ID,
14
15
  * MAGIC_PROGRAM_ID,
@@ -25,14 +26,14 @@
25
26
  * });
26
27
  *
27
28
  * await client.createPermission({ user: signer.publicKey, tokenMint, payer: signer.publicKey });
28
- * await client.delegateDeposit({ user: signer.publicKey, tokenMint, payer: signer.publicKey, validator: ER_VALIDATOR });
29
+ * await client.delegateDeposit({ user: signer.publicKey, tokenMint, payer: signer.publicKey, validator: ER_VALIDATOR_MAINNET });
29
30
  * await client.transferToUsernameDeposit({ username: "alice_user", tokenMint, amount: 100_000, user: signer.publicKey, payer: signer.publicKey, sessionToken: null });
30
31
  * await client.undelegateDeposit({ user: signer.publicKey, tokenMint, payer: signer.publicKey, sessionToken: null, magicProgram: MAGIC_PROGRAM_ID, magicContext: MAGIC_CONTEXT_ID });
31
32
  */
32
33
  export { LoyalPrivateTransactionsClient, waitForAccountOwnerChange, } from "./src/LoyalPrivateTransactionsClient";
33
34
  export type { WalletSigner, WalletLike, RpcOptions, ClientConfig, DepositData, UsernameDepositData, InitializeDepositParams, ModifyBalanceParams, ModifyBalanceResult, CreatePermissionParams, CreateUsernamePermissionParams, DelegateDepositParams, DelegateUsernameDepositParams, UndelegateDepositParams, UndelegateUsernameDepositParams, TransferDepositParams, TransferToUsernameDepositParams, DelegationRecord, DelegationStatusResult, DelegationStatusResponse, } from "./src/types";
34
35
  export { isKeypair, isAnchorProvider, isWalletLike } from "./src/types";
35
- export { ER_VALIDATOR, PROGRAM_ID, DELEGATION_PROGRAM_ID, PERMISSION_PROGRAM_ID, MAGIC_PROGRAM_ID, MAGIC_CONTEXT_ID, DEPOSIT_SEED, DEPOSIT_SEED_BYTES, USERNAME_DEPOSIT_SEED, USERNAME_DEPOSIT_SEED_BYTES, VAULT_SEED, VAULT_SEED_BYTES, PERMISSION_SEED, PERMISSION_SEED_BYTES, LAMPORTS_PER_SOL, solToLamports, lamportsToSol, } from "./src/constants";
36
+ export { ER_VALIDATOR, ER_VALIDATOR_DEVNET, ER_VALIDATOR_MAINNET, getErValidatorForSolanaEnv, getErValidatorForRpcEndpoint, PROGRAM_ID, DELEGATION_PROGRAM_ID, PERMISSION_PROGRAM_ID, MAGIC_PROGRAM_ID, MAGIC_CONTEXT_ID, DEPOSIT_SEED, DEPOSIT_SEED_BYTES, USERNAME_DEPOSIT_SEED, USERNAME_DEPOSIT_SEED_BYTES, VAULT_SEED, VAULT_SEED_BYTES, PERMISSION_SEED, PERMISSION_SEED_BYTES, LAMPORTS_PER_SOL, solToLamports, lamportsToSol, } from "./src/constants";
36
37
  export { findDepositPda, findUsernameDepositPda, findVaultPda, findPermissionPda, findDelegationRecordPda, findDelegationMetadataPda, findBufferPda, } from "./src/pda";
37
38
  export declare const IDL: {
38
39
  address: string;
package/dist/index.js CHANGED
@@ -20533,7 +20533,10 @@ var telegram_private_transfer_default = {
20533
20533
  111,
20534
20534
  115,
20535
20535
  105,
20536
- 116
20536
+ 116,
20537
+ 95,
20538
+ 118,
20539
+ 50
20537
20540
  ]
20538
20541
  },
20539
20542
  {
@@ -20611,7 +20614,10 @@ var telegram_private_transfer_default = {
20611
20614
  111,
20612
20615
  115,
20613
20616
  105,
20614
- 116
20617
+ 116,
20618
+ 95,
20619
+ 118,
20620
+ 50
20615
20621
  ]
20616
20622
  },
20617
20623
  {
@@ -20892,7 +20898,10 @@ var telegram_private_transfer_default = {
20892
20898
  111,
20893
20899
  115,
20894
20900
  105,
20895
- 116
20901
+ 116,
20902
+ 95,
20903
+ 118,
20904
+ 50
20896
20905
  ]
20897
20906
  },
20898
20907
  {
@@ -21188,7 +21197,10 @@ var telegram_private_transfer_default = {
21188
21197
  111,
21189
21198
  115,
21190
21199
  105,
21191
- 116
21200
+ 116,
21201
+ 95,
21202
+ 118,
21203
+ 50
21192
21204
  ]
21193
21205
  },
21194
21206
  {
@@ -21358,7 +21370,10 @@ var telegram_private_transfer_default = {
21358
21370
  111,
21359
21371
  115,
21360
21372
  105,
21361
- 116
21373
+ 116,
21374
+ 95,
21375
+ 118,
21376
+ 50
21362
21377
  ]
21363
21378
  },
21364
21379
  {
@@ -21668,7 +21683,10 @@ var telegram_private_transfer_default = {
21668
21683
  111,
21669
21684
  115,
21670
21685
  105,
21671
- 116
21686
+ 116,
21687
+ 95,
21688
+ 118,
21689
+ 50
21672
21690
  ]
21673
21691
  },
21674
21692
  {
@@ -21698,7 +21716,10 @@ var telegram_private_transfer_default = {
21698
21716
  111,
21699
21717
  115,
21700
21718
  105,
21701
- 116
21719
+ 116,
21720
+ 95,
21721
+ 118,
21722
+ 50
21702
21723
  ]
21703
21724
  },
21704
21725
  {
@@ -21780,7 +21801,10 @@ var telegram_private_transfer_default = {
21780
21801
  111,
21781
21802
  115,
21782
21803
  105,
21783
- 116
21804
+ 116,
21805
+ 95,
21806
+ 118,
21807
+ 50
21784
21808
  ]
21785
21809
  },
21786
21810
  {
@@ -21898,7 +21922,10 @@ var telegram_private_transfer_default = {
21898
21922
  111,
21899
21923
  115,
21900
21924
  105,
21901
- 116
21925
+ 116,
21926
+ 95,
21927
+ 118,
21928
+ 50
21902
21929
  ]
21903
21930
  },
21904
21931
  {
@@ -22279,13 +22306,21 @@ var telegram_private_transfer_default = {
22279
22306
 
22280
22307
  // src/constants.ts
22281
22308
  import { PublicKey, LAMPORTS_PER_SOL } from "@solana/web3.js";
22282
- var ER_VALIDATOR = new PublicKey("FnE6VJT5QNZdedZPnCoLsARgBwoE6DeJNjBs2H1gySXA");
22309
+ var ER_VALIDATOR_DEVNET = new PublicKey("FnE6VJT5QNZdedZPnCoLsARgBwoE6DeJNjBs2H1gySXA");
22310
+ var ER_VALIDATOR_MAINNET = new PublicKey("MTEWGuqxUpYZGFJQcp8tLN7x5v9BSeoFHYWQQ3n3xzo");
22311
+ var ER_VALIDATOR = ER_VALIDATOR_DEVNET;
22312
+ function getErValidatorForSolanaEnv(env) {
22313
+ return env === "mainnet" ? ER_VALIDATOR_MAINNET : ER_VALIDATOR_DEVNET;
22314
+ }
22315
+ function getErValidatorForRpcEndpoint(rpcEndpoint) {
22316
+ return rpcEndpoint.includes("mainnet-tee") ? ER_VALIDATOR_MAINNET : ER_VALIDATOR_DEVNET;
22317
+ }
22283
22318
  var PROGRAM_ID = new PublicKey("97FzQdWi26mFNR21AbQNg4KqofiCLqQydQfAvRQMcXhV");
22284
22319
  var DELEGATION_PROGRAM_ID = new PublicKey("DELeGGvXpWV2fqJUhqcF5ZSYMS4JTLjteaAMARRSaeSh");
22285
22320
  var PERMISSION_PROGRAM_ID = new PublicKey("ACLseoPoyC3cBqoUtkbjZ4aDrkurZW86v19pXz2XQnp1");
22286
22321
  var MAGIC_PROGRAM_ID = new PublicKey("Magic11111111111111111111111111111111111111");
22287
22322
  var MAGIC_CONTEXT_ID = new PublicKey("MagicContext1111111111111111111111111111111");
22288
- var DEPOSIT_SEED = "deposit";
22323
+ var DEPOSIT_SEED = "deposit_v2";
22289
22324
  var DEPOSIT_SEED_BYTES = Buffer.from(DEPOSIT_SEED);
22290
22325
  var USERNAME_DEPOSIT_SEED = "username_deposit";
22291
22326
  var USERNAME_DEPOSIT_SEED_BYTES = Buffer.from(USERNAME_DEPOSIT_SEED);
@@ -22476,6 +22511,15 @@ class LoyalPrivateTransactionsClient {
22476
22511
  this.ephemeralProgram = ephemeralProgram;
22477
22512
  this.wallet = wallet;
22478
22513
  }
22514
+ getExpectedErValidator() {
22515
+ return getErValidatorForRpcEndpoint(this.ephemeralProgram.provider.connection.rpcEndpoint);
22516
+ }
22517
+ getExpectedValidator() {
22518
+ return this.getExpectedErValidator();
22519
+ }
22520
+ async getAccountDelegationStatus(account) {
22521
+ return this.getDelegationStatus(account);
22522
+ }
22479
22523
  static async fromConfig(config) {
22480
22524
  const {
22481
22525
  signer,
@@ -22974,8 +23018,9 @@ class LoyalPrivateTransactionsClient {
22974
23018
  console.error("/getDelegationStatus", JSON.stringify(delegationStatus, null, 2));
22975
23019
  console.error("baseAccountInfo", prettyStringify(baseAccountInfo));
22976
23020
  console.error("ephemeralAccountInfo", prettyStringify(ephemeralAccountInfo));
23021
+ const expectedValidator = this.getExpectedErValidator();
22977
23022
  const authority = delegationStatus.result?.delegationRecord?.authority;
22978
- if (authority && authority !== ER_VALIDATOR.toString()) {
23023
+ if (authority && authority !== expectedValidator.toString()) {
22979
23024
  console.error(`Account is delegated on wrong validator: ${displayName}${account.toString()} - validator: ${authority}`);
22980
23025
  }
22981
23026
  throw new Error(`Account is delegated to ER: ${displayName}${account.toString()}`);
@@ -22997,7 +23042,7 @@ class LoyalPrivateTransactionsClient {
22997
23042
  console.error("baseAccountInfo", prettyStringify(baseAccountInfo));
22998
23043
  console.error("ephemeralAccountInfo", prettyStringify(ephemeralAccountInfo));
22999
23044
  throw new Error(`Account is not delegated to ER: ${displayName}${account.toString()}`);
23000
- } else if (!skipValidatorCheck && delegationStatus.result.delegationRecord.authority !== ER_VALIDATOR.toString()) {
23045
+ } else if (!skipValidatorCheck && delegationStatus.result.delegationRecord.authority !== this.getExpectedErValidator().toString()) {
23001
23046
  console.error(`Account is delegated on wrong validator: ${displayName}${account.toString()} - validator: ${delegationStatus.result.delegationRecord.authority}`);
23002
23047
  console.error("/getDelegationStatus:", JSON.stringify(delegationStatus, null, 2));
23003
23048
  console.error("baseAccountInfo", prettyStringify(baseAccountInfo));
@@ -23017,6 +23062,7 @@ class LoyalPrivateTransactionsClient {
23017
23062
  headers: { "Content-Type": "application/json" },
23018
23063
  body
23019
23064
  };
23065
+ const expectedValidator = this.getExpectedErValidator();
23020
23066
  const ephemeralUrl = this.ephemeralProgram.provider.connection.rpcEndpoint;
23021
23067
  const teeBaseUrl = ephemeralUrl.includes("mainnet-tee") ? "https://mainnet-tee.magicblock.app/" : "https://tee.magicblock.app/";
23022
23068
  try {
@@ -23028,7 +23074,7 @@ class LoyalPrivateTransactionsClient {
23028
23074
  result: {
23029
23075
  ...teeData.result,
23030
23076
  delegationRecord: {
23031
- authority: ER_VALIDATOR.toString()
23077
+ authority: expectedValidator.toString()
23032
23078
  }
23033
23079
  }
23034
23080
  };
@@ -23039,13 +23085,13 @@ class LoyalPrivateTransactionsClient {
23039
23085
  const routerBaseUrl = ephemeralUrl.includes("mainnet-tee") ? "https://router.magicblock.app/" : "https://devnet-router.magicblock.app/";
23040
23086
  const res = await fetch(routerBaseUrl, options);
23041
23087
  const routerData = await res.json();
23042
- if (routerData.error?.message?.includes(ER_VALIDATOR.toString())) {
23088
+ if (routerData.error?.message?.includes(expectedValidator.toString())) {
23043
23089
  return {
23044
23090
  ...routerData,
23045
23091
  result: {
23046
23092
  isDelegated: true,
23047
23093
  delegationRecord: {
23048
- authority: ER_VALIDATOR.toString()
23094
+ authority: expectedValidator.toString()
23049
23095
  }
23050
23096
  }
23051
23097
  };
@@ -23062,6 +23108,8 @@ export {
23062
23108
  isWalletLike,
23063
23109
  isKeypair,
23064
23110
  isAnchorProvider,
23111
+ getErValidatorForSolanaEnv,
23112
+ getErValidatorForRpcEndpoint,
23065
23113
  findVaultPda,
23066
23114
  findUsernameDepositPda,
23067
23115
  findPermissionPda,
@@ -23082,6 +23130,8 @@ export {
23082
23130
  LoyalPrivateTransactionsClient,
23083
23131
  LAMPORTS_PER_SOL,
23084
23132
  IDL,
23133
+ ER_VALIDATOR_MAINNET,
23134
+ ER_VALIDATOR_DEVNET,
23085
23135
  ER_VALIDATOR,
23086
23136
  DEPOSIT_SEED_BYTES,
23087
23137
  DEPOSIT_SEED,
@@ -1,7 +1,7 @@
1
1
  import { Connection, PublicKey } from "@solana/web3.js";
2
2
  import { Program } from "@coral-xyz/anchor";
3
3
  import type { TelegramPrivateTransfer } from "./idl/telegram_private_transfer.ts";
4
- import type { WalletLike, ClientConfig, DepositData, UsernameDepositData, InitializeDepositParams, ModifyBalanceParams, ModifyBalanceResult, CreatePermissionParams, CreateUsernamePermissionParams, DelegateDepositParams, DelegateUsernameDepositParams, UndelegateDepositParams, UndelegateUsernameDepositParams, TransferDepositParams, TransferToUsernameDepositParams, InitializeUsernameDepositParams, ClaimUsernameDepositToDepositParams } from "./types";
4
+ import type { WalletLike, ClientConfig, DepositData, UsernameDepositData, InitializeDepositParams, ModifyBalanceParams, ModifyBalanceResult, CreatePermissionParams, CreateUsernamePermissionParams, DelegateDepositParams, DelegateUsernameDepositParams, UndelegateDepositParams, UndelegateUsernameDepositParams, TransferDepositParams, TransferToUsernameDepositParams, InitializeUsernameDepositParams, ClaimUsernameDepositToDepositParams, DelegationStatusResponse } from "./types";
5
5
  export declare function waitForAccountOwnerChange(connection: Connection, account: PublicKey, expectedOwner: PublicKey, timeoutMs?: number, intervalMs?: number): {
6
6
  wait: () => Promise<void>;
7
7
  cancel: () => Promise<void>;
@@ -36,6 +36,9 @@ export declare class LoyalPrivateTransactionsClient {
36
36
  readonly ephemeralProgram: Program<TelegramPrivateTransfer>;
37
37
  readonly wallet: WalletLike;
38
38
  private constructor();
39
+ private getExpectedErValidator;
40
+ getExpectedValidator(): PublicKey;
41
+ getAccountDelegationStatus(account: PublicKey): Promise<DelegationStatusResponse>;
39
42
  /**
40
43
  * Create client connected to an ephemeral rollup endpoint with PER auth token.
41
44
  * Verifies TEE RPC integrity and obtains an auth token automatically.
@@ -1,8 +1,15 @@
1
1
  import { PublicKey, LAMPORTS_PER_SOL } from "@solana/web3.js";
2
2
  /**
3
- * TEE ER Validator
3
+ * TEE ER Validators
4
+ */
5
+ export declare const ER_VALIDATOR_DEVNET: PublicKey;
6
+ export declare const ER_VALIDATOR_MAINNET: PublicKey;
7
+ /**
8
+ * Backward-compatible alias (defaults to devnet validator).
4
9
  */
5
10
  export declare const ER_VALIDATOR: PublicKey;
11
+ export declare function getErValidatorForSolanaEnv(env: string): PublicKey;
12
+ export declare function getErValidatorForRpcEndpoint(rpcEndpoint: string): PublicKey;
6
13
  /**
7
14
  * Telegram Private Transfer program ID
8
15
  */
@@ -26,7 +33,7 @@ export declare const MAGIC_CONTEXT_ID: PublicKey;
26
33
  /**
27
34
  * PDA seed for deposit accounts
28
35
  */
29
- export declare const DEPOSIT_SEED = "deposit";
36
+ export declare const DEPOSIT_SEED = "deposit_v2";
30
37
  export declare const DEPOSIT_SEED_BYTES: Buffer<ArrayBuffer>;
31
38
  /**
32
39
  * PDA seed for username deposit accounts
@@ -88,7 +88,10 @@ export type TelegramPrivateTransfer = {
88
88
  111,
89
89
  115,
90
90
  105,
91
- 116
91
+ 116,
92
+ 95,
93
+ 118,
94
+ 50
92
95
  ];
93
96
  },
94
97
  {
@@ -166,7 +169,10 @@ export type TelegramPrivateTransfer = {
166
169
  111,
167
170
  115,
168
171
  105,
169
- 116
172
+ 116,
173
+ 95,
174
+ 118,
175
+ 50
170
176
  ];
171
177
  },
172
178
  {
@@ -447,7 +453,10 @@ export type TelegramPrivateTransfer = {
447
453
  111,
448
454
  115,
449
455
  105,
450
- 116
456
+ 116,
457
+ 95,
458
+ 118,
459
+ 50
451
460
  ];
452
461
  },
453
462
  {
@@ -743,7 +752,10 @@ export type TelegramPrivateTransfer = {
743
752
  111,
744
753
  115,
745
754
  105,
746
- 116
755
+ 116,
756
+ 95,
757
+ 118,
758
+ 50
747
759
  ];
748
760
  },
749
761
  {
@@ -913,7 +925,10 @@ export type TelegramPrivateTransfer = {
913
925
  111,
914
926
  115,
915
927
  105,
916
- 116
928
+ 116,
929
+ 95,
930
+ 118,
931
+ 50
917
932
  ];
918
933
  },
919
934
  {
@@ -1223,7 +1238,10 @@ export type TelegramPrivateTransfer = {
1223
1238
  111,
1224
1239
  115,
1225
1240
  105,
1226
- 116
1241
+ 116,
1242
+ 95,
1243
+ 118,
1244
+ 50
1227
1245
  ];
1228
1246
  },
1229
1247
  {
@@ -1253,7 +1271,10 @@ export type TelegramPrivateTransfer = {
1253
1271
  111,
1254
1272
  115,
1255
1273
  105,
1256
- 116
1274
+ 116,
1275
+ 95,
1276
+ 118,
1277
+ 50
1257
1278
  ];
1258
1279
  },
1259
1280
  {
@@ -1335,7 +1356,10 @@ export type TelegramPrivateTransfer = {
1335
1356
  111,
1336
1357
  115,
1337
1358
  105,
1338
- 116
1359
+ 116,
1360
+ 95,
1361
+ 118,
1362
+ 50
1339
1363
  ];
1340
1364
  },
1341
1365
  {
@@ -1453,7 +1477,10 @@ export type TelegramPrivateTransfer = {
1453
1477
  111,
1454
1478
  115,
1455
1479
  105,
1456
- 116
1480
+ 116,
1481
+ 95,
1482
+ 118,
1483
+ 50
1457
1484
  ];
1458
1485
  },
1459
1486
  {
package/dist/src/idl.d.ts CHANGED
@@ -212,7 +212,7 @@ export type TelegramPrivateTransfer = {
212
212
  seeds: [
213
213
  {
214
214
  kind: "const";
215
- value: [100, 101, 112, 111, 115, 105, 116];
215
+ value: [100, 101, 112, 111, 115, 105, 116, 95, 118, 50];
216
216
  },
217
217
  {
218
218
  kind: "account";
@@ -447,7 +447,7 @@ export type TelegramPrivateTransfer = {
447
447
  seeds: [
448
448
  {
449
449
  kind: "const";
450
- value: [100, 101, 112, 111, 115, 105, 116];
450
+ value: [100, 101, 112, 111, 115, 105, 116, 95, 118, 50];
451
451
  },
452
452
  {
453
453
  kind: "arg";
@@ -895,7 +895,7 @@ export type TelegramPrivateTransfer = {
895
895
  seeds: [
896
896
  {
897
897
  kind: "const";
898
- value: [100, 101, 112, 111, 115, 105, 116];
898
+ value: [100, 101, 112, 111, 115, 105, 116, 95, 118, 50];
899
899
  },
900
900
  {
901
901
  kind: "account";
@@ -966,7 +966,7 @@ export type TelegramPrivateTransfer = {
966
966
  seeds: [
967
967
  {
968
968
  kind: "const";
969
- value: [100, 101, 112, 111, 115, 105, 116];
969
+ value: [100, 101, 112, 111, 115, 105, 116, 95, 118, 50];
970
970
  },
971
971
  {
972
972
  kind: "account";
@@ -1246,7 +1246,7 @@ export type TelegramPrivateTransfer = {
1246
1246
  seeds: [
1247
1247
  {
1248
1248
  kind: "const";
1249
- value: [100, 101, 112, 111, 115, 105, 116];
1249
+ value: [100, 101, 112, 111, 115, 105, 116, 95, 118, 50];
1250
1250
  },
1251
1251
  {
1252
1252
  kind: "account";
@@ -1268,7 +1268,7 @@ export type TelegramPrivateTransfer = {
1268
1268
  seeds: [
1269
1269
  {
1270
1270
  kind: "const";
1271
- value: [100, 101, 112, 111, 115, 105, 116];
1271
+ value: [100, 101, 112, 111, 115, 105, 116, 95, 118, 50];
1272
1272
  },
1273
1273
  {
1274
1274
  kind: "account";
@@ -1328,7 +1328,7 @@ export type TelegramPrivateTransfer = {
1328
1328
  seeds: [
1329
1329
  {
1330
1330
  kind: "const";
1331
- value: [100, 101, 112, 111, 115, 105, 116];
1331
+ value: [100, 101, 112, 111, 115, 105, 116, 95, 118, 50];
1332
1332
  },
1333
1333
  {
1334
1334
  kind: "account";
@@ -1426,7 +1426,7 @@ export type TelegramPrivateTransfer = {
1426
1426
  seeds: [
1427
1427
  {
1428
1428
  kind: "const";
1429
- value: [100, 101, 112, 111, 115, 105, 116];
1429
+ value: [100, 101, 112, 111, 115, 105, 116, 95, 118, 50];
1430
1430
  },
1431
1431
  {
1432
1432
  kind: "account";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@loyal-labs/private-transactions",
3
- "version": "0.2.3",
3
+ "version": "0.2.4",
4
4
  "description": "SDK for Telegram-based private Solana deposits",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",