@fogo/sessions-sdk 0.1.7 → 0.1.9

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.
@@ -1,20 +1,20 @@
1
- import type { GetLatestBlockhashApi, Instruction, Rpc, Transaction, TransactionWithLifetime } from "@solana/kit";
2
- import type { TransactionError } from "@solana/web3.js";
3
- import { Keypair, PublicKey, TransactionInstruction, VersionedTransaction, Connection as Web3Connection } from "@solana/web3.js";
1
+ import type { Address, GetLatestBlockhashApi, Instruction, Rpc, Transaction, TransactionWithLifetime } from "@solana/kit";
2
+ import type { TransactionError, TransactionInstruction } from "@solana/web3.js";
3
+ import { Keypair, PublicKey, VersionedTransaction, Connection as Web3Connection } from "@solana/web3.js";
4
4
  import { Network } from "./network.js";
5
5
  export declare enum TransactionResultType {
6
6
  Success = 0,
7
7
  Failed = 1
8
8
  }
9
9
  declare const TransactionResult: {
10
- Success: (signature: string) => {
11
- type: TransactionResultType.Success;
12
- signature: string;
13
- };
14
10
  Failed: (signature: string, error: TransactionError) => {
11
+ error: TransactionError;
12
+ signature: string;
15
13
  type: TransactionResultType.Failed;
14
+ };
15
+ Success: (signature: string) => {
16
16
  signature: string;
17
- error: TransactionError;
17
+ type: TransactionResultType.Success;
18
18
  };
19
19
  };
20
20
  export type TransactionResult = ReturnType<(typeof TransactionResult)[keyof typeof TransactionResult]>;
@@ -30,18 +30,19 @@ export declare const createSessionConnection: (options: {
30
30
  sendToPaymaster: (transaction: Transaction) => Promise<TransactionResult>;
31
31
  sponsor: PublicKey;
32
32
  })) => {
33
- rpc: Rpc<import("@solana/kit").RequestAirdropApi & import("@solana/kit").GetAccountInfoApi & import("@solana/kit").GetBalanceApi & import("@solana/kit").GetBlockApi & import("@solana/kit").GetBlockCommitmentApi & import("@solana/kit").GetBlockHeightApi & import("@solana/kit").GetBlockProductionApi & import("@solana/kit").GetBlocksApi & import("@solana/kit").GetBlocksWithLimitApi & import("@solana/kit").GetBlockTimeApi & import("@solana/kit").GetClusterNodesApi & import("@solana/kit").GetEpochInfoApi & import("@solana/kit").GetEpochScheduleApi & import("@solana/kit").GetFeeForMessageApi & import("@solana/kit").GetFirstAvailableBlockApi & import("@solana/kit").GetGenesisHashApi & import("@solana/kit").GetHealthApi & import("@solana/kit").GetHighestSnapshotSlotApi & import("@solana/kit").GetIdentityApi & import("@solana/kit").GetInflationGovernorApi & import("@solana/kit").GetInflationRateApi & import("@solana/kit").GetInflationRewardApi & import("@solana/kit").GetLargestAccountsApi & GetLatestBlockhashApi & import("@solana/kit").GetLeaderScheduleApi & import("@solana/kit").GetMaxRetransmitSlotApi & import("@solana/kit").GetMaxShredInsertSlotApi & import("@solana/kit").GetMinimumBalanceForRentExemptionApi & import("@solana/kit").GetMultipleAccountsApi & import("@solana/kit").GetProgramAccountsApi & import("@solana/kit").GetRecentPerformanceSamplesApi & import("@solana/kit").GetRecentPrioritizationFeesApi & import("@solana/kit").GetSignaturesForAddressApi & import("@solana/kit").GetSignatureStatusesApi & import("@solana/kit").GetSlotApi & import("@solana/kit").GetSlotLeaderApi & import("@solana/kit").GetSlotLeadersApi & import("@solana/kit").GetStakeMinimumDelegationApi & import("@solana/kit").GetSupplyApi & import("@solana/kit").GetTokenAccountBalanceApi & import("@solana/kit").GetTokenAccountsByDelegateApi & import("@solana/kit").GetTokenAccountsByOwnerApi & import("@solana/kit").GetTokenLargestAccountsApi & import("@solana/kit").GetTokenSupplyApi & import("@solana/kit").GetTransactionApi & import("@solana/kit").GetTransactionCountApi & import("@solana/kit").GetVersionApi & import("@solana/kit").GetVoteAccountsApi & import("@solana/kit").IsBlockhashValidApi & import("@solana/kit").MinimumLedgerSlotApi & import("@solana/kit").SendTransactionApi & import("@solana/kit").SimulateTransactionApi>;
34
33
  connection: Web3Connection;
35
- network: Network;
36
34
  getSolanaConnection: () => Promise<Web3Connection>;
37
- sendToPaymaster: (domain: string, sessionKey: CryptoKeyPair | undefined, instructions: TransactionOrInstructions, walletPublicKey: PublicKey, extraConfig?: SendTransactionOptions) => Promise<TransactionResult>;
38
35
  getSponsor: (domain: string) => Promise<PublicKey>;
36
+ network: Network;
37
+ rpc: Rpc<import("@solana/kit").RequestAirdropApi & import("@solana/kit").GetAccountInfoApi & import("@solana/kit").GetBalanceApi & import("@solana/kit").GetBlockApi & import("@solana/kit").GetBlockCommitmentApi & import("@solana/kit").GetBlockHeightApi & import("@solana/kit").GetBlockProductionApi & import("@solana/kit").GetBlocksApi & import("@solana/kit").GetBlocksWithLimitApi & import("@solana/kit").GetBlockTimeApi & import("@solana/kit").GetClusterNodesApi & import("@solana/kit").GetEpochInfoApi & import("@solana/kit").GetEpochScheduleApi & import("@solana/kit").GetFeeForMessageApi & import("@solana/kit").GetFirstAvailableBlockApi & import("@solana/kit").GetGenesisHashApi & import("@solana/kit").GetHealthApi & import("@solana/kit").GetHighestSnapshotSlotApi & import("@solana/kit").GetIdentityApi & import("@solana/kit").GetInflationGovernorApi & import("@solana/kit").GetInflationRateApi & import("@solana/kit").GetInflationRewardApi & import("@solana/kit").GetLargestAccountsApi & GetLatestBlockhashApi & import("@solana/kit").GetLeaderScheduleApi & import("@solana/kit").GetMaxRetransmitSlotApi & import("@solana/kit").GetMaxShredInsertSlotApi & import("@solana/kit").GetMinimumBalanceForRentExemptionApi & import("@solana/kit").GetMultipleAccountsApi & import("@solana/kit").GetProgramAccountsApi & import("@solana/kit").GetRecentPerformanceSamplesApi & import("@solana/kit").GetRecentPrioritizationFeesApi & import("@solana/kit").GetSignaturesForAddressApi & import("@solana/kit").GetSignatureStatusesApi & import("@solana/kit").GetSlotApi & import("@solana/kit").GetSlotLeaderApi & import("@solana/kit").GetSlotLeadersApi & import("@solana/kit").GetStakeMinimumDelegationApi & import("@solana/kit").GetSupplyApi & import("@solana/kit").GetTokenAccountBalanceApi & import("@solana/kit").GetTokenAccountsByDelegateApi & import("@solana/kit").GetTokenAccountsByOwnerApi & import("@solana/kit").GetTokenLargestAccountsApi & import("@solana/kit").GetTokenSupplyApi & import("@solana/kit").GetTransactionApi & import("@solana/kit").GetTransactionCountApi & import("@solana/kit").GetVersionApi & import("@solana/kit").GetVoteAccountsApi & import("@solana/kit").IsBlockhashValidApi & import("@solana/kit").MinimumLedgerSlotApi & import("@solana/kit").SendTransactionApi & import("@solana/kit").SimulateTransactionApi>;
38
+ sendToPaymaster: (domain: string, sessionKey: CryptoKeyPair | undefined, instructions: TransactionOrInstructions, walletPublicKey: PublicKey, extraConfig?: SendTransactionOptions) => Promise<TransactionResult>;
39
39
  };
40
40
  export type TransactionOrInstructions = (TransactionInstruction | Instruction)[] | VersionedTransaction | (Transaction & TransactionWithLifetime);
41
41
  export type SendTransactionOptions = {
42
42
  variation?: string | undefined;
43
43
  addressLookupTable?: string | undefined;
44
44
  extraSigners?: (CryptoKeyPair | Keypair)[] | undefined;
45
+ feeMint?: PublicKey | Address;
45
46
  };
46
47
  export type Connection = ReturnType<typeof createSessionConnection>;
47
48
  export {};
package/cjs/connection.js CHANGED
@@ -11,7 +11,6 @@ const web3_js_1 = require("@solana/web3.js");
11
11
  const bn_js_1 = __importDefault(require("bn.js"));
12
12
  const zod_1 = require("zod");
13
13
  const instructions_js_1 = require("./instructions.js");
14
- const mints_js_1 = require("./mints.js");
15
14
  const network_js_1 = require("./network.js");
16
15
  const paymaster_js_1 = require("./paymaster.js");
17
16
  const DEFAULT_RPC = {
@@ -28,14 +27,14 @@ var TransactionResultType;
28
27
  TransactionResultType[TransactionResultType["Failed"] = 1] = "Failed";
29
28
  })(TransactionResultType || (exports.TransactionResultType = TransactionResultType = {}));
30
29
  const TransactionResult = {
31
- Success: (signature) => ({
32
- type: TransactionResultType.Success,
33
- signature,
34
- }),
35
30
  Failed: (signature, error) => ({
31
+ error,
32
+ signature,
36
33
  type: TransactionResultType.Failed,
34
+ }),
35
+ Success: (signature) => ({
37
36
  signature,
38
- error,
37
+ type: TransactionResultType.Success,
39
38
  }),
40
39
  };
41
40
  const createSessionConnection = (options) => {
@@ -45,12 +44,12 @@ const createSessionConnection = (options) => {
45
44
  const addressLookupTableCache = new Map();
46
45
  const sponsorCache = new Map();
47
46
  return {
48
- rpc,
49
47
  connection,
50
- network: options.network,
51
48
  getSolanaConnection: createSolanaConnectionGetter(options.network),
52
- sendToPaymaster: async (domain, sessionKey, instructions, walletPublicKey, extraConfig) => sendToPaymaster({ ...options, rpc, connection, addressLookupTableCache, sponsorCache }, domain, sessionKey, instructions, walletPublicKey, extraConfig),
53
49
  getSponsor: (domain) => getSponsor(options, sponsorCache, domain),
50
+ network: options.network,
51
+ rpc,
52
+ sendToPaymaster: async (domain, sessionKey, instructions, walletPublicKey, extraConfig) => sendToPaymaster({ ...options, addressLookupTableCache, connection, rpc, sponsorCache }, domain, sessionKey, instructions, walletPublicKey, extraConfig),
54
53
  };
55
54
  };
56
55
  exports.createSessionConnection = createSessionConnection;
@@ -88,13 +87,13 @@ const sendToPaymaster = async (connection, domain, sessionKey, instructions, wal
88
87
  url.searchParams.set("variation", extraConfig.variation);
89
88
  }
90
89
  const response = await fetch(url, {
91
- method: "POST",
92
- headers: {
93
- "Content-Type": "application/json",
94
- },
95
90
  body: JSON.stringify({
96
91
  transaction: (0, kit_1.getBase64EncodedWireTransaction)(transaction),
97
92
  }),
93
+ headers: {
94
+ "Content-Type": "application/json",
95
+ },
96
+ method: "POST",
98
97
  });
99
98
  if (response.status === 200) {
100
99
  return sponsorAndSendResponseSchema.parse(await response.json());
@@ -108,7 +107,9 @@ const sendToPaymaster = async (connection, domain, sessionKey, instructions, wal
108
107
  }
109
108
  };
110
109
  const buildTransaction = async (connection, domain, sessionKey, signerKeys, instructions, walletPublicKey, extraConfig) => {
111
- const feeMint = new web3_js_1.PublicKey(mints_js_1.USDC_MINT[connection.network]); // TODO: make this configurable
110
+ const feeMint = extraConfig?.feeMint === undefined
111
+ ? undefined
112
+ : new web3_js_1.PublicKey(extraConfig.feeMint);
112
113
  const [{ value: latestBlockhash }, sponsor, addressLookupTable, signers, feeAmount, sessionKeyAddress,] = await Promise.all([
113
114
  connection.rpc.getLatestBlockhash().send(),
114
115
  connection.sponsor === undefined
@@ -118,7 +119,7 @@ const buildTransaction = async (connection, domain, sessionKey, signerKeys, inst
118
119
  ? Promise.resolve(undefined)
119
120
  : getAddressLookupTable(connection.connection, connection.addressLookupTableCache, extraConfig.addressLookupTable),
120
121
  Promise.all(signerKeys.map((signer) => (0, kit_1.createSignerFromKeyPair)(signer))),
121
- extraConfig?.variation === undefined
122
+ extraConfig?.variation === undefined || feeMint === undefined
122
123
  ? Promise.resolve(new bn_js_1.default(0))
123
124
  : (0, paymaster_js_1.getPaymasterFee)(connection.paymaster ?? DEFAULT_PAYMASTER[connection.network], domain, extraConfig.variation, feeMint),
124
125
  sessionKey === undefined
@@ -126,13 +127,13 @@ const buildTransaction = async (connection, domain, sessionKey, signerKeys, inst
126
127
  : (0, kit_1.getAddressFromPublicKey)(sessionKey.publicKey),
127
128
  ]);
128
129
  const tollboothInstruction = await buildTollboothInstructionIfNeeded({
129
- sessionKeyAddress,
130
- walletPublicKey,
131
130
  domain,
132
- feeMint,
133
131
  feeAmount,
132
+ feeMint,
133
+ sessionKeyAddress,
134
+ walletPublicKey,
134
135
  });
135
- return (0, kit_1.partiallySignTransactionMessageWithSigners)((0, kit_1.pipe)((0, kit_1.createTransactionMessage)({ version: 0 }), (tx) => (0, kit_1.setTransactionMessageFeePayer)((0, compat_1.fromLegacyPublicKey)(sponsor), tx), (tx) => (0, kit_1.setTransactionMessageLifetimeUsingBlockhash)(latestBlockhash, tx), (tx) => (0, kit_1.appendTransactionMessageInstructions)(instructions.map((instruction) => instruction instanceof web3_js_1.TransactionInstruction
136
+ return (0, kit_1.partiallySignTransactionMessageWithSigners)((0, kit_1.pipe)((0, kit_1.createTransactionMessage)({ version: 0 }), (tx) => (0, kit_1.setTransactionMessageFeePayer)((0, compat_1.fromLegacyPublicKey)(sponsor), tx), (tx) => (0, kit_1.setTransactionMessageLifetimeUsingBlockhash)(latestBlockhash, tx), (tx) => (0, kit_1.appendTransactionMessageInstructions)(instructions.map((instruction) => "programId" in instruction
136
137
  ? (0, compat_1.fromLegacyTransactionInstruction)(instruction)
137
138
  : instruction), tx), (tx) => tollboothInstruction === undefined ||
138
139
  tx.instructions.some((instruction) => instruction.programAddress == sessions_idls_1.TollboothIdl.address)
@@ -144,13 +145,15 @@ const buildTransaction = async (connection, domain, sessionKey, signerKeys, inst
144
145
  }), (tx) => (0, kit_1.addSignersToTransactionMessage)(signers, tx)));
145
146
  };
146
147
  const buildTollboothInstructionIfNeeded = ({ sessionKeyAddress, walletPublicKey, domain, feeMint, feeAmount, }) => {
147
- if (feeAmount.gt(new bn_js_1.default(0)) && sessionKeyAddress !== undefined) {
148
+ if (feeAmount.gt(new bn_js_1.default(0)) &&
149
+ sessionKeyAddress !== undefined &&
150
+ feeMint !== undefined) {
148
151
  return (0, instructions_js_1.createPaymasterFeeInstruction)({
149
- sessionKey: new web3_js_1.PublicKey(sessionKeyAddress),
150
- walletPublicKey,
151
152
  domain,
152
- feeMint,
153
153
  feeAmount,
154
+ feeMint,
155
+ sessionKey: new web3_js_1.PublicKey(sessionKeyAddress),
156
+ walletPublicKey,
154
157
  }).then(compat_1.fromLegacyTransactionInstruction);
155
158
  }
156
159
  else {
@@ -179,15 +182,15 @@ const getSignerKeys = async (sessionKey, extraSigners) => {
179
182
  const sponsorAndSendResponseSchema = zod_1.z
180
183
  .discriminatedUnion("type", [
181
184
  zod_1.z.object({
182
- type: zod_1.z.literal("success"),
183
185
  signature: zod_1.z.string(),
186
+ type: zod_1.z.literal("success"),
184
187
  }),
185
188
  zod_1.z.object({
186
- type: zod_1.z.literal("failed"),
187
- signature: zod_1.z.string(),
188
189
  error: zod_1.z.object({
189
190
  InstructionError: zod_1.z.tuple([zod_1.z.number(), zod_1.z.unknown()]),
190
191
  }),
192
+ signature: zod_1.z.string(),
193
+ type: zod_1.z.literal("failed"),
191
194
  }),
192
195
  ])
193
196
  .transform((data) => {
package/cjs/context.d.ts CHANGED
@@ -7,13 +7,13 @@ export declare const createSessionContext: (options: {
7
7
  domain?: string | undefined;
8
8
  }) => Promise<{
9
9
  chainId: string;
10
+ connection: Web3Connection;
10
11
  domain: string;
11
- payer: PublicKey;
12
- internalPayer: PublicKey;
13
12
  getSolanaConnection: () => Promise<Web3Connection>;
14
- connection: Web3Connection;
15
- rpc: import("@solana/kit").Rpc<import("@solana/kit").RequestAirdropApi & import("@solana/kit").GetAccountInfoApi & import("@solana/kit").GetBalanceApi & import("@solana/kit").GetBlockApi & import("@solana/kit").GetBlockCommitmentApi & import("@solana/kit").GetBlockHeightApi & import("@solana/kit").GetBlockProductionApi & import("@solana/kit").GetBlocksApi & import("@solana/kit").GetBlocksWithLimitApi & import("@solana/kit").GetBlockTimeApi & import("@solana/kit").GetClusterNodesApi & import("@solana/kit").GetEpochInfoApi & import("@solana/kit").GetEpochScheduleApi & import("@solana/kit").GetFeeForMessageApi & import("@solana/kit").GetFirstAvailableBlockApi & import("@solana/kit").GetGenesisHashApi & import("@solana/kit").GetHealthApi & import("@solana/kit").GetHighestSnapshotSlotApi & import("@solana/kit").GetIdentityApi & import("@solana/kit").GetInflationGovernorApi & import("@solana/kit").GetInflationRateApi & import("@solana/kit").GetInflationRewardApi & import("@solana/kit").GetLargestAccountsApi & import("@solana/kit").GetLatestBlockhashApi & import("@solana/kit").GetLeaderScheduleApi & import("@solana/kit").GetMaxRetransmitSlotApi & import("@solana/kit").GetMaxShredInsertSlotApi & import("@solana/kit").GetMinimumBalanceForRentExemptionApi & import("@solana/kit").GetMultipleAccountsApi & import("@solana/kit").GetProgramAccountsApi & import("@solana/kit").GetRecentPerformanceSamplesApi & import("@solana/kit").GetRecentPrioritizationFeesApi & import("@solana/kit").GetSignaturesForAddressApi & import("@solana/kit").GetSignatureStatusesApi & import("@solana/kit").GetSlotApi & import("@solana/kit").GetSlotLeaderApi & import("@solana/kit").GetSlotLeadersApi & import("@solana/kit").GetStakeMinimumDelegationApi & import("@solana/kit").GetSupplyApi & import("@solana/kit").GetTokenAccountBalanceApi & import("@solana/kit").GetTokenAccountsByDelegateApi & import("@solana/kit").GetTokenAccountsByOwnerApi & import("@solana/kit").GetTokenLargestAccountsApi & import("@solana/kit").GetTokenSupplyApi & import("@solana/kit").GetTransactionApi & import("@solana/kit").GetTransactionCountApi & import("@solana/kit").GetVersionApi & import("@solana/kit").GetVoteAccountsApi & import("@solana/kit").IsBlockhashValidApi & import("@solana/kit").MinimumLedgerSlotApi & import("@solana/kit").SendTransactionApi & import("@solana/kit").SimulateTransactionApi>;
13
+ internalPayer: PublicKey;
16
14
  network: import("./network.js").Network;
15
+ payer: PublicKey;
16
+ rpc: import("@solana/kit").Rpc<import("@solana/kit").RequestAirdropApi & import("@solana/kit").GetAccountInfoApi & import("@solana/kit").GetBalanceApi & import("@solana/kit").GetBlockApi & import("@solana/kit").GetBlockCommitmentApi & import("@solana/kit").GetBlockHeightApi & import("@solana/kit").GetBlockProductionApi & import("@solana/kit").GetBlocksApi & import("@solana/kit").GetBlocksWithLimitApi & import("@solana/kit").GetBlockTimeApi & import("@solana/kit").GetClusterNodesApi & import("@solana/kit").GetEpochInfoApi & import("@solana/kit").GetEpochScheduleApi & import("@solana/kit").GetFeeForMessageApi & import("@solana/kit").GetFirstAvailableBlockApi & import("@solana/kit").GetGenesisHashApi & import("@solana/kit").GetHealthApi & import("@solana/kit").GetHighestSnapshotSlotApi & import("@solana/kit").GetIdentityApi & import("@solana/kit").GetInflationGovernorApi & import("@solana/kit").GetInflationRateApi & import("@solana/kit").GetInflationRewardApi & import("@solana/kit").GetLargestAccountsApi & import("@solana/kit").GetLatestBlockhashApi & import("@solana/kit").GetLeaderScheduleApi & import("@solana/kit").GetMaxRetransmitSlotApi & import("@solana/kit").GetMaxShredInsertSlotApi & import("@solana/kit").GetMinimumBalanceForRentExemptionApi & import("@solana/kit").GetMultipleAccountsApi & import("@solana/kit").GetProgramAccountsApi & import("@solana/kit").GetRecentPerformanceSamplesApi & import("@solana/kit").GetRecentPrioritizationFeesApi & import("@solana/kit").GetSignaturesForAddressApi & import("@solana/kit").GetSignatureStatusesApi & import("@solana/kit").GetSlotApi & import("@solana/kit").GetSlotLeaderApi & import("@solana/kit").GetSlotLeadersApi & import("@solana/kit").GetStakeMinimumDelegationApi & import("@solana/kit").GetSupplyApi & import("@solana/kit").GetTokenAccountBalanceApi & import("@solana/kit").GetTokenAccountsByDelegateApi & import("@solana/kit").GetTokenAccountsByOwnerApi & import("@solana/kit").GetTokenLargestAccountsApi & import("@solana/kit").GetTokenSupplyApi & import("@solana/kit").GetTransactionApi & import("@solana/kit").GetTransactionCountApi & import("@solana/kit").GetVersionApi & import("@solana/kit").GetVoteAccountsApi & import("@solana/kit").IsBlockhashValidApi & import("@solana/kit").MinimumLedgerSlotApi & import("@solana/kit").SendTransactionApi & import("@solana/kit").SimulateTransactionApi>;
17
17
  sendTransaction: (sessionKey: CryptoKeyPair | undefined, instructions: TransactionOrInstructions, walletPublicKey: PublicKey, sendTxOptions?: SendTransactionOptions) => Promise<import("./connection.js").TransactionResult>;
18
18
  }>;
19
19
  export type SendTransactionOptions = SendTransactionBaseOptions & {
package/cjs/context.js CHANGED
@@ -15,13 +15,13 @@ const createSessionContext = async (options) => {
15
15
  ]);
16
16
  return {
17
17
  chainId: await fetchChainId(options.connection.connection),
18
+ connection: options.connection.connection,
18
19
  domain: getDomain(options.domain),
19
- payer: sponsor,
20
- internalPayer: internalSponsor,
21
20
  getSolanaConnection: options.connection.getSolanaConnection,
22
- connection: options.connection.connection,
23
- rpc: options.connection.rpc,
21
+ internalPayer: internalSponsor,
24
22
  network: options.connection.network,
23
+ payer: sponsor,
24
+ rpc: options.connection.rpc,
25
25
  sendTransaction: (sessionKey, instructions, walletPublicKey, sendTxOptions) => options.connection.sendToPaymaster(sendTxOptions?.paymasterDomain ?? domain, sessionKey, instructions, walletPublicKey, {
26
26
  ...sendTxOptions,
27
27
  addressLookupTable: sendTxOptions?.addressLookupTable ??
package/cjs/crypto.js CHANGED
@@ -24,7 +24,7 @@ exports.signMessageWithKey = signMessageWithKey;
24
24
  * @returns True if the message and signature are valid, false otherwise
25
25
  */
26
26
  const verifyMessageWithKey = async (publicKey, message, signature) => {
27
- const isValid = await crypto.subtle.verify({ name: "Ed25519" }, publicKey, bs58_1.default.decode(signature), new TextEncoder().encode(message));
27
+ const isValid = await crypto.subtle.verify({ name: "Ed25519" }, publicKey, Buffer.from(bs58_1.default.decode(signature)), new TextEncoder().encode(message));
28
28
  return isValid;
29
29
  };
30
30
  exports.verifyMessageWithKey = verifyMessageWithKey;