```ts -import { LitNodeClient, encryptString, decryptToString } from "@lit-protocol/lit-node-client"; -import { LitNetwork, LIT_RPC } from "@lit-protocol/constants"; +import { LitNodeClient } from "@lit-protocol/lit-node-client"; +import { encryptString, decryptToString } from "lit-protocol/encryption"; +import { LIT_NETWORK, LIT_RPC } from "@lit-protocol/constants"; import * as ethers from "ethers"; const litNodeClient = new LitNodeClient({ - litNetwork: LitNetwork.DatilDev, + litNetwork: LIT_NETWORK.DatilDev, debug: false }); await litNodeClient.connect(); @@ -120,7 +121,7 @@ const accessControlConditions = [ ### Encrypting Data -The Lit SDK offers several methods for encrypting data, which you can explore [here](https://v6-api-doc-lit-js-sdk.vercel.app/modules/encryption_src.html). In this example, we'll use the [encryptString](https://v6-api-doc-lit-js-sdk.vercel.app/functions/encryption_src.encryptString.html) method. +The Lit SDK offers several methods for encrypting data, which you can explore [here](https://v7-api-doc-lit-js-sdk.vercel.app/modules/encryption_src.html). In this example, we'll use the [encryptString](https://v7-api-doc-lit-js-sdk.vercel.app/functions/encryption_src.encryptString.html) method. We start by defining the string we want to encrypt, stored in the `dataToEncrypt` variable. Using the `encryptString` method, we encrypt the data by providing the `accessControlConditions` (ACCs) and `dataToEncrypt` as parameters. This method returns an object containing: @@ -157,10 +158,10 @@ In this step, we'll generate Session Signatures that grant permission to decrypt
```ts
+import { LIT_ABILITY } from "@lit-protocol/constants";
import {
createSiweMessage,
generateAuthSig,
- LitAbility,
LitAccessControlConditionResource,
} from "@lit-protocol/auth-helpers";
@@ -175,7 +176,7 @@ const sessionSigs = await litNodeClient.getSessionSigs({
dataToEncryptHash
)
),
- ability: LitAbility.AccessControlConditionDecryption,
+ ability: LIT_ABILITY.AccessControlConditionDecryption,
},
],
authNeededCallback: async ({
@@ -206,7 +207,7 @@ const sessionSigs = await litNodeClient.getSessionSigs({
With the generated Session Signatures, we can proceed to decrypt the data using the `decryptToString` method. This method sends a decryption request to the Lit network, which verifies your permissions based on the ACCs and Session Signatures.
-If all conditions are met, the data is decrypted and returned as a string. You can explore other decryption methods [here](https://v6-api-doc-lit-js-sdk.vercel.app/modules/encryption_src.html).
+If all conditions are met, the data is decrypted and returned as a string. You can explore other decryption methods [here](https://v7-api-doc-lit-js-sdk.vercel.app/modules/encryption_src.html).
```ts
+import { LIT_ABILITY } from "@lit-protocol/constants";
import {
createSiweMessage,
generateAuthSig,
- LitAbility,
LitActionResource,
LitPKPResource,
} from "@lit-protocol/auth-helpers";
@@ -150,11 +150,11 @@ const sessionSigs = await litNodeClient.getSessionSigs({
resourceAbilityRequests: [
{
resource: new LitPKPResource(pkpInfo.tokenId),
- ability: LitAbility.PKPSigning,
+ ability: LIT_ABILITY.PKPSigning,
},
{
resource: new LitActionResource("*"),
- ability: LitAbility.LitActionExecution,
+ ability: LIT_ABILITY.LitActionExecution,
},
],
authNeededCallback: async ({
@@ -185,7 +185,7 @@ const sessionSigs = await litNodeClient.getSessionSigs({
With the generated Session Signatures, we can use the `pkpSign` method to sign our data using the PKP. In this example, we're signing the hash of the message **"The answer to the universe is 42."**.
-If you'd like to see the `pkpSign` method's parameters, you can find them [here](https://v6-api-doc-lit-js-sdk.vercel.app/classes/lit_node_client_src.LitNodeClientNodeJs.html#pkpSign).
+If you'd like to see the `pkpSign` method's parameters, you can find them [here](https://v7-api-doc-lit-js-sdk.vercel.app/classes/lit_node_client_src.LitNodeClientNodeJs.html#pkpSign).
```ts
+import { LIT_ABILITY } from "@lit-protocol/constants";
import {
- LitAbility,
LitActionResource,
createSiweMessage,
generateAuthSig,
@@ -110,7 +110,7 @@ const sessionSignatures = await litNodeClient.getSessionSigs({
resourceAbilityRequests: [
{
resource: new LitActionResource("*"),
- ability: LitAbility.LitActionExecution,
+ ability: LIT_ABILITY.LitActionExecution,
},
],
authNeededCallback: async ({
@@ -167,7 +167,7 @@ To execute the Lit Action, we use the `executeJs` function. You'll need to pass
If you'd like to use the IPFS method mentioned previously, you would instead use `ipfsId` instead of `code: litActionCode`, and the `ipfsId` would be the IPFS CID of the Lit Action code.
-More details on the `executeJs` method can be found [here](https://v6-api-doc-lit-js-sdk.vercel.app/interfaces/types_src.JsonExecutionSdkParams.html).
+More details on the `executeJs` method can be found [here](https://v7-api-doc-lit-js-sdk.vercel.app/interfaces/types_src.JsonExecutionSdkParams.html).
Click here to see how this is done
diff --git a/docs/intro/first-request/making-first-signing.md b/docs/intro/first-request/making-first-signing.md
index 67eaaddc..85d93c9f 100644
--- a/docs/intro/first-request/making-first-signing.md
+++ b/docs/intro/first-request/making-first-signing.md
@@ -78,11 +78,11 @@ Additionally, we'll initialize an Ethereum wallet using the `ETHEREUM_PRIVATE_KE
```ts
import { LitNodeClient } from "@lit-protocol/lit-node-client";
-import { LitNetwork, LIT_RPC } from "@lit-protocol/constants";
+import { LIT_NETWORK, LIT_RPC } from "@lit-protocol/constants";
import * as ethers from "ethers";
const litNodeClient = new LitNodeClient({
- litNetwork: LitNetwork.DatilDev,
+ litNetwork: LIT_NETWORK.DatilDev,
debug: false
});
await litNodeClient.connect();
@@ -109,7 +109,7 @@ import { LitContracts } from "@lit-protocol/contracts-sdk";
const litContracts = new LitContracts({
signer: ethersWallet,
- network: LitNetwork.DatilDev,
+ network: LIT_NETWORK.DatilDev,
debug: false
});
await litContracts.connect();
@@ -136,10 +136,10 @@ These permissions ensure that the session can only perform specific actions with
Click here to see how this is done
diff --git a/docs/network/migration-guide.md b/docs/network/migration-guide.md
index 9d70da4b..8c4d4421 100644
--- a/docs/network/migration-guide.md
+++ b/docs/network/migration-guide.md
@@ -112,9 +112,9 @@ async decrypt(encryptedString, encryptedSymmetricKey) {
### 3. Connect to `Habanero` or `Manzano` and encrypt it again
```js
import {ethers} from "ethers";
+import { LIT_ABILITY } from "@lit-protocol/constants";
import {
LitAccessControlConditionResource,
- LitAbility,
createSiweMessageWithRecaps,
generateAuthSig,
} from "@lit-protocol/auth-helpers";
@@ -182,7 +182,7 @@ class LitV3 { // or Class LitV4
resourceAbilityRequests: [
{
resource: litResource,
- ability: LitAbility.AccessControlConditionDecryption,
+ ability: LIT_ABILITY.AccessControlConditionDecryption,
},
],
authNeededCallback,
diff --git a/docs/paying-for-lit/delegating-credit.md b/docs/paying-for-lit/delegating-credit.md
index 8de4e59b..036f818f 100644
--- a/docs/paying-for-lit/delegating-credit.md
+++ b/docs/paying-for-lit/delegating-credit.md
@@ -85,16 +85,16 @@ The address corresponding to `process.env.ETHEREUM_PRIVATE_KEY` **needs** to be
```ts
import { LitNodeClient } from "@lit-protocol/lit-node-client";
-import { LitNetwork } from "@lit-protocol/constants";
+import { LIT_NETWORK } from "@lit-protocol/constants";
litNodeClient = new LitNodeClient({
- litNetwork: LitNetwork.DatilTest,
+ litNetwork: LIT_NETWORK.DatilTest,
debug: false,
});
await litNodeClient.connect();
```
-You can learn more about the `@lit-protocol/lit-node-client` package and what is offers using the [API reference docs](https://v6-api-doc-lit-js-sdk.vercel.app/modules/lit_node_client_src.html).
+You can learn more about the `@lit-protocol/lit-node-client` package and what is offers using the [API reference docs](https://v7-api-doc-lit-js-sdk.vercel.app/modules/lit_node_client_src.html).
## Generating the Capacity Delegation Auth Sig
@@ -113,7 +113,7 @@ const { capacityDelegationAuthSig } =
#### `dAppOwnerWallet`
-This parameter is a [SignerLike](https://v6-api-doc-lit-js-sdk.vercel.app/interfaces/types_src.SignerLike.html) object (for this guide it's an instance of `ethers.Wallet`) that will be used to sign the ERC-5573 SIWE message that authorizes `delegateeAddresses` to use the Capacity Credit. The Ethereum address of the signer **must** own the Capacity Credit to delegate usage of it.
+This parameter is a [SignerLike](https://v7-api-doc-lit-js-sdk.vercel.app/interfaces/types_src.SignerLike.html) object (for this guide it's an instance of `ethers.Wallet`) that will be used to sign the ERC-5573 SIWE message that authorizes `delegateeAddresses` to use the Capacity Credit. The Ethereum address of the signer **must** own the Capacity Credit to delegate usage of it.
#### `capacityTokenId`
diff --git a/docs/paying-for-lit/minting-capacity-credit/via-contract.md b/docs/paying-for-lit/minting-capacity-credit/via-contract.md
index cb0ce847..48dd1456 100644
--- a/docs/paying-for-lit/minting-capacity-credit/via-contract.md
+++ b/docs/paying-for-lit/minting-capacity-credit/via-contract.md
@@ -66,16 +66,16 @@ const ethersSigner = new ethers.Wallet(
```ts
import { LitContracts } from "@lit-protocol/contracts-sdk";
-import { LitNetwork } from "@lit-protocol/constants";
+import { LIT_NETWORK } from "@lit-protocol/constants";
const litContractClient = new LitContracts({
signer: ethersSigner,
- network: LitNetwork.DatilTest,
+ network: LIT_NETWORK.DatilTest,
});
await litContractClient.connect();
```
-You can learn more about the `@lit-protocol/contracts-sdk` package and what is offers using the [API reference docs](https://v6-api-doc-lit-js-sdk.vercel.app/modules/contracts_sdk_src.html).
+You can learn more about the `@lit-protocol/contracts-sdk` package and what is offers using the [API reference docs](https://v7-api-doc-lit-js-sdk.vercel.app/modules/contracts_sdk_src.html).
## Minting a Capacity Credit
diff --git a/docs/paying-for-lit/using-delegated-auth-sig.md b/docs/paying-for-lit/using-delegated-auth-sig.md
index 8bba3061..f2b90d43 100644
--- a/docs/paying-for-lit/using-delegated-auth-sig.md
+++ b/docs/paying-for-lit/using-delegated-auth-sig.md
@@ -72,7 +72,7 @@ ethers@v5
```ts
import ethers from "ethers";
-import { LIT_RPC } from "@lit-protocol/constants";
+import { LIT_RPC, LIT_ABILITY } from "@lit-protocol/constants";
const ethersSigner = new ethers.Wallet(
process.env.ETHEREUM_PRIVATE_KEY,
@@ -88,16 +88,16 @@ The address corresponding to `process.env.ETHEREUM_PRIVATE_KEY` **needs** to hav
```ts
import { LitNodeClient } from "@lit-protocol/lit-node-client";
-import { LitNetwork } from "@lit-protocol/constants";
+import { LIT_NETWORK } from "@lit-protocol/constants";
litNodeClient = new LitNodeClient({
- litNetwork: LitNetwork.DatilTest,
+ litNetwork: LIT_NETWORK.DatilTest,
debug: false,
});
await litNodeClient.connect();
```
-You can learn more about the `@lit-protocol/lit-node-client` package and what is offers using the [API reference docs](https://v6-api-doc-lit-js-sdk.vercel.app/modules/lit_node_client_src.html).
+You can learn more about the `@lit-protocol/lit-node-client` package and what is offers using the [API reference docs](https://v7-api-doc-lit-js-sdk.vercel.app/modules/lit_node_client_src.html).
### Generating Session Sigs with the Delegation Auth Sig
@@ -113,7 +113,7 @@ const sessionSigs = await litNodeClient.getSessionSigs({
resourceAbilityRequests: [
{
resource: new LitActionResource("*"),
- ability: LitAbility.LitActionExecution,
+ ability: LIT_ABILITY.LitActionExecution,
},
],
authNeededCallback: async ({
diff --git a/docs/sdk/access-control/encryption.md b/docs/sdk/access-control/encryption.md
index cabceb83..5b5217ab 100644
--- a/docs/sdk/access-control/encryption.md
+++ b/docs/sdk/access-control/encryption.md
@@ -78,7 +78,7 @@ Within a file (in the Lit example repos it will likely be called `lit.js`), set
```jsx
import * as LitJsSdk from "@lit-protocol/lit-node-client";
-import { LitNetwork } from "@lit-protocol/constants";
+import { LIT_NETWORK } from "@lit-protocol/constants";
class Lit {
litNodeClient;
@@ -90,7 +90,7 @@ class Lit {
async connect() {
this.litNodeClient = new LitJsSdk.LitNodeClient({
- litNetwork: "datil-dev",
+ litNetwork: LIT_NETWORK.DatilDev,
});
await this.litNodeClient.connect();
}
@@ -134,7 +134,7 @@ Running `litNodeClient.connect()` will return a promise that resolves when you
```jsx
import * as LitJsSdk from "@lit-protocol/lit-node-client";
-import { LitNetwork } from "@lit-protocol/constants";
+import { LIT_NETWORK } from "@lit-protocol/constants";
class Lit {
litNodeClient;
@@ -147,7 +147,7 @@ class Lit {
async connect() {
app.locals.litNodeClient = new LitJsSdk.LitNodeClientNodeJs({
alertWhenUnauthorized: false,
- litNetwork: "datil-dev",
+ litNetwork: LIT_NETWORK.DatilDev,
debug: true,
});
@@ -200,19 +200,15 @@ const accessControlConditions = [
To encrypt a string, use one of the following functions:
-- [encryptString()](https://v6-api-doc-lit-js-sdk.vercel.app/functions/encryption_src.encryptString.html) - Used to encrypt the raw string.
-- - [encryptString()](../../) - Used to encrypt the raw string.
-- [zipAndEncryptString()](https://v6-api-doc-lit-js-sdk.vercel.app/functions/encryption_src.zipAndEncryptString.html) - Compresses the string (using [JSZip](https://www.npmjs.com/package/jszip)) before encrypting it. This is useful for saving space, but takes additional time to perform the zip.
+- [encryptString()](https://v7-api-doc-lit-js-sdk.vercel.app/functions/encryption_src.encryptString.html) - Used to encrypt the raw string.
To encrypt a file, use:
-- [encryptFile()](https://v6-api-doc-lit-js-sdk.vercel.app/functions/encryption_src.encryptFile.html) - Used to encrypt a file without doing any zipping or packing. Because zipping larger files takes time, this function is useful when encrypting large files ( > 20mb). This also requires that you store the file metadata.
-- [encryptFileAndZipWithMetadata()](https://v6-api-doc-lit-js-sdk.vercel.app/functions/encryption_src.encryptFileAndZipWithMetadata.html) - Used to encrypt a file and then zip it up with the metadata (using [JSZip](https://www.npmjs.com/package/jszip)). This is useful for when you don't want to store the file metadata separately.
-- [zipAndEncryptFiles()](https://v6-api-doc-lit-js-sdk.vercel.app/functions/encryption_src.zipAndEncryptFiles.html) - Used to zip and encrypt multiple files. This does **not** include the file metadata in the zip, so you must store those yourself.
+- [encryptFile()](https://v7-api-doc-lit-js-sdk.vercel.app/functions/encryption_src.encryptFile.html) - Used to encrypt a file without doing any zipping or packing. Because zipping larger files takes time, this function is useful when encrypting large files ( > 20mb). This also requires that you store the file metadata.
-Apart from these, we have one more function which can be used to encrypt both strings and files:
+Apart from this, we have one more function which can be used to encrypt both strings and files:
-- [encryptToJson()](https://v6-api-doc-lit-js-sdk.vercel.app/functions/encryption_src.encryptToJson.html) - Used to encrypt a string or file and serialize all the metadata required to decrypt i.e. accessControlConditions, evmContractConditions, solRpcConditions, unifiedAccessControlConditions & chain to JSON. It is useful for encrypting/decrypting data in IPFS or other storage without compressing it in a ZIP file.
+- [encryptToJson()](https://v7-api-doc-lit-js-sdk.vercel.app/functions/encryption_src.encryptToJson.html) - Used to encrypt a string or file and serialize all the metadata required to decrypt i.e. accessControlConditions, evmContractConditions, solRpcConditions, unifiedAccessControlConditions & chain to JSON. It is useful for encrypting/decrypting data in IPFS or other storage without compressing it in a ZIP file.
Encryption can be performed entirely client-side and doesn't require making a request to the Lit nodes.
@@ -257,7 +253,7 @@ Both `ciphertext` and `dataToEncryptHash` will be base64 encoded strings.
### Performing Decryption
-Make sure we have `accessControlConditions`, `ciphertext`, and the `dataToEncryptHash` data we created during the encryption step. An exception is when using `encryptFileAndZipWithMetadata()` which will include this metadata in the zip.
+Make sure we have `accessControlConditions`, `ciphertext`, and the `dataToEncryptHash` data we created during the encryption step.
There is just one step:
@@ -282,13 +278,13 @@ npm i @lit-protocol/contracts-sdk
The next step is to initialize a signer. This should be a wallet controlled by your application and the same wallet you’ll use to mint the Capacity Credit NFT:
```jsx
-import { LitNetwork } from "@lit-protocol/constants";
+import { LIT_NETWORK } from "@lit-protocol/constants";
const walletWithCapacityCredit = new Wallet("Click here to see how this is done
diff --git a/docs/user-wallets/pkps/advanced-topics/auth-methods/add-remove-auth-methods.md b/docs/user-wallets/pkps/advanced-topics/auth-methods/add-remove-auth-methods.md
index 5fda5c89..e51d6e83 100644
--- a/docs/user-wallets/pkps/advanced-topics/auth-methods/add-remove-auth-methods.md
+++ b/docs/user-wallets/pkps/advanced-topics/auth-methods/add-remove-auth-methods.md
@@ -16,13 +16,13 @@ You can only pass one of the three. If you pass more than one, `PKPEthersWallet`
```js
import { LitNodeClient } from "@lit-protocol/lit-node-client";
-import { LitAbility, LitActionResource } from '@lit-protocol/auth-helpers';
+import { LitActionResource } from '@lit-protocol/auth-helpers';
import { PKPEthersWallet } from "@lit-protocol/pkp-ethers";
-import { LIT_RPC, LitNetwork } from "@lit-protocol/constants";
+import { LIT_RPC, LIT_NETWORK, LIT_ABILITY } from "@lit-protocol/constants";
// If you haven't done before, create a LitNodeClient instance
const litNodeClient = new LitNodeClient({
- litNetwork: LitNetwork.DatilDev,
+ litNetwork: LIT_NETWORK.DatilDev,
});
await litNodeClient.connect();
@@ -30,7 +30,7 @@ await litNodeClient.connect();
const resourceAbilities = [
{
resource: new LitActionResource("*"),
- ability: LitAbility.PKPSigning,
+ ability: LIT_ABILITY.PKPSigning,
},
];
@@ -46,8 +46,8 @@ const authNeededCallback = async (params: AuthCallbackParams) => {
};
const pkpWallet = new PKPEthersWallet({
+ litNodeClient,
authContext: {
- client: litNodeClient,
getSessionSigsProps: {
chain: 'ethereum',
expiration: new Date(Date.now() + 60_000 * 60).toISOString(),
diff --git a/docs/user-wallets/pkps/advanced-topics/auth-methods/custom-auth.md b/docs/user-wallets/pkps/advanced-topics/auth-methods/custom-auth.md
index ba2d946d..ea544429 100644
--- a/docs/user-wallets/pkps/advanced-topics/auth-methods/custom-auth.md
+++ b/docs/user-wallets/pkps/advanced-topics/auth-methods/custom-auth.md
@@ -28,7 +28,7 @@ Inside of your Lit Actions, there is an object called `Lit.Auth` that will be pr
- actionIpfsIds: An array of IPFS IDs that are being called by this Lit Action. This will typically only have a single item, but if you call multiple Lit Actions from inside your Lit Action, they will all be included here. For example, if you have two Lit Actions, A, and B, and A calls B, then the first item in the array will be A and the last item will be B. Therefore, the last item in the array is always the IPFS ID of the Lit Action that is currently running.
- authSigAddress: A verified wallet address, if one was passed in. This is the address that was used to sign the AuthSig.
-- authMethodContexts: An array of auth method contexts. Each entry will contain the following items: `userId`, `appId`, and `authMethodType`. A list of AuthMethodTypes can be found [here](./overview.md) in the docs.
+- authMethodContexts: An array of auth method contexts. Each entry will contain the following items: `userId`, `appId`, and `authMethodType`. A list of AUTH_METHOD_TYPEs can be found [here](./overview.md) in the docs.
Important to note on Authentication Helpers: authorization is not included. This means that a user can present a Google oAuth JWT as an auth method to be resolved and validated by your Lit Action. The Action will then stick the result inside the Lit.Auth object. In this case, the result would be the users verified google account info like their user id, email address, and more.
diff --git a/docs/user-wallets/pkps/advanced-topics/auth-methods/email-sms.md b/docs/user-wallets/pkps/advanced-topics/auth-methods/email-sms.md
index e8e9beaf..f1d2bc45 100644
--- a/docs/user-wallets/pkps/advanced-topics/auth-methods/email-sms.md
+++ b/docs/user-wallets/pkps/advanced-topics/auth-methods/email-sms.md
@@ -60,20 +60,23 @@ const sessionStatus = await client.sessions.authenticate({
});
```
-## Use an Authenticated Stytch Session with the `lit-auth-client`
+## Use an Authenticated Stytch Session with the `LitRelay`
```javascript
-import { LitAuthClient } from "@lit-protocol/lit-auth-client";
+import { LIT_NETWORK } from "@lit-protocol/constants";
+import { StytchOtpProvider } from "@lit-protocol/providers";
+import { LitRelay } from "@lit-protocol/lit-auth-client";
-const authClient = new LitAuthClient({
- litRelayConfig: {
- relayApiKey: LIT_RELAY_API_KEY,
- },
- litNodeClient,
+const litRelay = new LitRelay({
+ relayUrl: LitRelay.getRelayUrl(LIT_NETWORK.DatilDev),
+ relayApiKey: 'test-api-key',
});
-const session =
- authClient.initProvider < StytchOtpProvider > ProviderType.StytchOtp;
+const session = new StytchOtpProvider({ relay: litRelay, litNodeClient, options: {
+ userId: sessionStatus.session.user_id,
+ appId: "project-test-XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"}
+ });
+
// from the above example of using the Stytch client to get an authenticated session
const authMethod = await session.authenticate({
accessToken: sessionStatus.session_jwt,
@@ -86,7 +89,7 @@ We also support specific Stytch `authentication factors` which are the same as u
The `user id` will be the `Authentication Factor` transport. Meaning for example of sms otp was the authentication factor, then the phone number of the user will be the `user id`
below is a table of what each `auth factor` will use as the `user id`
-| ProviderType | user identifier value |
+| PROVIDER_TYPE | user identifier value |
| ----------------------- | --------------------- |
| StytchEmailFactorOtp | email address |
| StytchSmsFactorOtp | phone number |
@@ -124,9 +127,11 @@ An alternative to minting the PKP NFT via the Lit Relay Server is to send a tran
### Authenticating to Fetch PKP information
```javascript
+import { AUTH_METHOD_SCOPE } from "@lit-protocol/constants";
+
// Using the session examples above you can call to fetch pkps by the auth method gotten from the provider examples
const txHash = await session.fetchPKPThroughRelayer(authMethod, {
- permittedAuthMethodScopes: [[AuthMethodScope.SignAnything]]
+ permittedAuthMethodScopes: [[AUTH_METHOD_SCOPE.SignAnything]]
});
```
@@ -156,6 +161,8 @@ Below is an example of an authentication method from successful authentication
After successfully authenticating with a social login provider, you can generate `SessionSigs` using the provider's `getSessionSigs` method. The `getSessionSigs` method takes in an `AuthMethod` object, optional `LitNodeClient` object, a PKP public key, and other session-specific arguments in `SessionSigsParams` object such as `resourceAbilityRequests` and `chain`. View the [API Docs](https://js-sdk.litprotocol.com/interfaces/types_src.BaseProviderSessionSigsParams.html).
```javascript
+import { LIT_ABILITY } from "@lit-protocol/constants";
+
// Get session signatures for the given PKP public key and auth method
const sessionSigs = await provider.getSessionSigs({
authMethod: '