@fogo/sessions-sdk 0.1.8 → 0.1.10

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
1
  import type { Address, 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";
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,12 +30,12 @@ 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 = {
package/cjs/connection.js CHANGED
@@ -27,14 +27,14 @@ var TransactionResultType;
27
27
  TransactionResultType[TransactionResultType["Failed"] = 1] = "Failed";
28
28
  })(TransactionResultType || (exports.TransactionResultType = TransactionResultType = {}));
29
29
  const TransactionResult = {
30
- Success: (signature) => ({
31
- type: TransactionResultType.Success,
32
- signature,
33
- }),
34
30
  Failed: (signature, error) => ({
31
+ error,
32
+ signature,
35
33
  type: TransactionResultType.Failed,
34
+ }),
35
+ Success: (signature) => ({
36
36
  signature,
37
- error,
37
+ type: TransactionResultType.Success,
38
38
  }),
39
39
  };
40
40
  const createSessionConnection = (options) => {
@@ -44,12 +44,12 @@ const createSessionConnection = (options) => {
44
44
  const addressLookupTableCache = new Map();
45
45
  const sponsorCache = new Map();
46
46
  return {
47
- rpc,
48
47
  connection,
49
- network: options.network,
50
48
  getSolanaConnection: createSolanaConnectionGetter(options.network),
51
- sendToPaymaster: async (domain, sessionKey, instructions, walletPublicKey, extraConfig) => sendToPaymaster({ ...options, rpc, connection, addressLookupTableCache, sponsorCache }, domain, sessionKey, instructions, walletPublicKey, extraConfig),
52
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),
53
53
  };
54
54
  };
55
55
  exports.createSessionConnection = createSessionConnection;
@@ -87,13 +87,13 @@ const sendToPaymaster = async (connection, domain, sessionKey, instructions, wal
87
87
  url.searchParams.set("variation", extraConfig.variation);
88
88
  }
89
89
  const response = await fetch(url, {
90
- method: "POST",
91
- headers: {
92
- "Content-Type": "application/json",
93
- },
94
90
  body: JSON.stringify({
95
91
  transaction: (0, kit_1.getBase64EncodedWireTransaction)(transaction),
96
92
  }),
93
+ headers: {
94
+ "Content-Type": "application/json",
95
+ },
96
+ method: "POST",
97
97
  });
98
98
  if (response.status === 200) {
99
99
  return sponsorAndSendResponseSchema.parse(await response.json());
@@ -127,13 +127,13 @@ const buildTransaction = async (connection, domain, sessionKey, signerKeys, inst
127
127
  : (0, kit_1.getAddressFromPublicKey)(sessionKey.publicKey),
128
128
  ]);
129
129
  const tollboothInstruction = await buildTollboothInstructionIfNeeded({
130
- sessionKeyAddress,
131
- walletPublicKey,
132
130
  domain,
133
- feeMint,
134
131
  feeAmount,
132
+ feeMint,
133
+ sessionKeyAddress,
134
+ walletPublicKey,
135
135
  });
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) => 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
137
137
  ? (0, compat_1.fromLegacyTransactionInstruction)(instruction)
138
138
  : instruction), tx), (tx) => tollboothInstruction === undefined ||
139
139
  tx.instructions.some((instruction) => instruction.programAddress == sessions_idls_1.TollboothIdl.address)
@@ -149,11 +149,11 @@ const buildTollboothInstructionIfNeeded = ({ sessionKeyAddress, walletPublicKey,
149
149
  sessionKeyAddress !== undefined &&
150
150
  feeMint !== undefined) {
151
151
  return (0, instructions_js_1.createPaymasterFeeInstruction)({
152
- sessionKey: new web3_js_1.PublicKey(sessionKeyAddress),
153
- walletPublicKey,
154
152
  domain,
155
- feeMint,
156
153
  feeAmount,
154
+ feeMint,
155
+ sessionKey: new web3_js_1.PublicKey(sessionKeyAddress),
156
+ walletPublicKey,
157
157
  }).then(compat_1.fromLegacyTransactionInstruction);
158
158
  }
159
159
  else {
@@ -182,15 +182,15 @@ const getSignerKeys = async (sessionKey, extraSigners) => {
182
182
  const sponsorAndSendResponseSchema = zod_1.z
183
183
  .discriminatedUnion("type", [
184
184
  zod_1.z.object({
185
- type: zod_1.z.literal("success"),
186
185
  signature: zod_1.z.string(),
186
+ type: zod_1.z.literal("success"),
187
187
  }),
188
188
  zod_1.z.object({
189
- type: zod_1.z.literal("failed"),
190
- signature: zod_1.z.string(),
191
189
  error: zod_1.z.object({
192
190
  InstructionError: zod_1.z.tuple([zod_1.z.number(), zod_1.z.unknown()]),
193
191
  }),
192
+ signature: zod_1.z.string(),
193
+ type: zod_1.z.literal("failed"),
194
194
  }),
195
195
  ])
196
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;