From b489364c920d63a5f6e83ac72d1f93d2040bf336 Mon Sep 17 00:00:00 2001 From: MikeDiam Date: Mon, 20 Jan 2025 13:16:14 +0300 Subject: [PATCH 1/5] [docs update] update docs --- src/StakeWiseSDK.ts | 14 ++++++++++++++ website/setup/installation-setup.md | 29 ++++++++++++++++++++++------- 2 files changed, 36 insertions(+), 7 deletions(-) diff --git a/src/StakeWiseSDK.ts b/src/StakeWiseSDK.ts index e324fcf3..aa2e8906 100644 --- a/src/StakeWiseSDK.ts +++ b/src/StakeWiseSDK.ts @@ -38,6 +38,20 @@ class StakeWiseSDK { } const provider = options.provider || createProvider(options) + const originalGetSigner = provider.getSigner + + provider.getSigner = async function (address?: string) { + const providerError = 'To send this transaction, please provide BrowserProvider to the StakeWiseSDK' + + try { + const signer = await originalGetSigner.bind(this)(address) + + return signer + } + catch (error) { + throw new Error(providerError) + } + } const contracts = createContracts({ provider, config }) diff --git a/website/setup/installation-setup.md b/website/setup/installation-setup.md index aaef320f..e59d1845 100644 --- a/website/setup/installation-setup.md +++ b/website/setup/installation-setup.md @@ -25,6 +25,8 @@ webpackConfig.module.rules.push( ```typescript import { StakeWiseSDK, Network } from '@stakewise/v3-sdk' +// sdk without provider allows to call methods to get data such as `sdk.vault.getVault`, +// but doesn't allow to send transactions such as `sdk.vault.deposit` const sdk = new StakeWiseSDK({ network: Network.Mainnet, endpoints: { @@ -32,15 +34,28 @@ const sdk = new StakeWiseSDK({ }, }) +// sdk with provider allows to call methods to get data and send transactions +const provider = new BrowserProvider(window.ethereum, { + name: 'mainnet', + chainId: Network.Mainnet, +}) + +const sdk = new StakeWiseSDK({ + network: Network.Mainnet, + provider: new BrowserProvider(window.ethereum, { + name: 'mainnet', + chainId: Network.Mainnet, + }), +}) ``` #### SDK Constructor Arguments: -| Name | Type | Required | Description | -|--------------------|------------------------------------------------------------------|----------|---------------------------| -| network | `Network` | **Yes** | Chain id | -| provider | `BrowserProvider or JsonRpcProvider` | **No** | You can provide your implementation of the provender for ethers | -| endpoints.web3 | `string OR Array<(string \| { url: string, headers: Headers })>` | **No** | Your urls for connecting to blockchain. This parameter is required if `provider` is not provided. If more than one URL is provided, they will be used as fallbacks. | -| endpoints.subgraph | `string` | **No** | stakewise subgraph url | -| endpoints.api | `string` | **No** | stakewise backend url | +| Name | Type | Required | Description | +|--------------------|--------------------------------------------------------------------|----------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| network | `Network` | **Yes** | Chain id | +| provider | `BrowserProvider` or `JsonRpcProvider` | **No** | You can provide your implementation of the provender for ethers. This parameter is required to send transactions. | +| endpoints.web3 | `string` or `Array<(string \| { url: string, headers: Headers })>` | **No** | Your urls for connecting to blockchain. This parameter is required if `provider` is not provided. If more than one URL is provided, they will be used as fallbacks. | +| endpoints.subgraph | `string` | **No** | stakewise subgraph url | +| endpoints.api | `string` | **No** | stakewise backend url | From 10972a63c5f553d71a805df80c4670a6eea75329 Mon Sep 17 00:00:00 2001 From: MikeDiam Date: Mon, 20 Jan 2025 13:19:16 +0300 Subject: [PATCH 2/5] [docs update] update docs --- website/setup/installation-setup.md | 5 ----- 1 file changed, 5 deletions(-) diff --git a/website/setup/installation-setup.md b/website/setup/installation-setup.md index e59d1845..76539c5b 100644 --- a/website/setup/installation-setup.md +++ b/website/setup/installation-setup.md @@ -35,11 +35,6 @@ const sdk = new StakeWiseSDK({ }) // sdk with provider allows to call methods to get data and send transactions -const provider = new BrowserProvider(window.ethereum, { - name: 'mainnet', - chainId: Network.Mainnet, -}) - const sdk = new StakeWiseSDK({ network: Network.Mainnet, provider: new BrowserProvider(window.ethereum, { From dd83fc4a1e5614f986ca5547155035df047da818 Mon Sep 17 00:00:00 2001 From: MikeDiam Date: Mon, 20 Jan 2025 16:36:28 +0300 Subject: [PATCH 3/5] [docs update] add wagmi example --- website/setup/installation-setup.md | 42 ++++++++++++++++++++++++----- 1 file changed, 35 insertions(+), 7 deletions(-) diff --git a/website/setup/installation-setup.md b/website/setup/installation-setup.md index 76539c5b..d8d057ec 100644 --- a/website/setup/installation-setup.md +++ b/website/setup/installation-setup.md @@ -20,21 +20,30 @@ webpackConfig.module.rules.push( } ) ``` -#### Create SDK instance: +#### Create SDK instance + +SDK without specified provider allows to call methods to get data such as `sdk.vault.getVault`, +but doesn't allow to send transactions such as `sdk.vault.deposit` ```typescript import { StakeWiseSDK, Network } from '@stakewise/v3-sdk' -// sdk without provider allows to call methods to get data such as `sdk.vault.getVault`, -// but doesn't allow to send transactions such as `sdk.vault.deposit` +// sdk with provider allows to call methods to get data and send transactions const sdk = new StakeWiseSDK({ network: Network.Mainnet, - endpoints: { - web3: 'https://mainnet.infura.io/v3/...', - }, + provider: new BrowserProvider(window.ethereum, { + name: 'mainnet', + chainId: Network.Mainnet, + }), }) +``` + +SDK with specified provider allows to call methods to get data and send transactions + +```typescript +import { BrowserProvider } from 'ethers' +import { StakeWiseSDK, Network } from '@stakewise/v3-sdk' -// sdk with provider allows to call methods to get data and send transactions const sdk = new StakeWiseSDK({ network: Network.Mainnet, provider: new BrowserProvider(window.ethereum, { @@ -44,6 +53,25 @@ const sdk = new StakeWiseSDK({ }) ``` +SDK with specified provider using wagmi connector. +Detailed example can be found [here](https://stackblitz.com/edit/stakewise-sdk?file=src%2Fcomponents%2Futil%2Findex.ts,src%2Fcomponents%2FConnect.tsx,src%2Fcomponents%2FSdkContext.tsx,src%2Fcomponents%2Futil%2FinitContext.ts,src%2Fwagmi.ts,src%2FApp.tsx,src%2Fcomponents%2FConnectWallet.tsx,src%2Fcomponents%2FAccount.tsx). + +```typescript +import { BrowserProvider, Eip1193Provider } from 'ethers' +import { StakeWiseSDK, Network } from '@stakewise/v3-sdk' + +wagmiConnector.getProvder() + .then((library) => { + const sdk = new StakeWiseSDK({ + network: Network.Mainnet, + provider: new BrowserProvider(library as Eip1193Provider, { + name: 'mainnet', + chainId: Network.Mainnet, + }), + }) + }) +``` + #### SDK Constructor Arguments: | Name | Type | Required | Description | From 4f4eaa1f4630aca6d8b155650db6dd783a0856d0 Mon Sep 17 00:00:00 2001 From: MikeDiam Date: Mon, 20 Jan 2025 16:37:59 +0300 Subject: [PATCH 4/5] [docs update] add wagmi example --- website/setup/installation-setup.md | 1 - 1 file changed, 1 deletion(-) diff --git a/website/setup/installation-setup.md b/website/setup/installation-setup.md index d8d057ec..5c91b743 100644 --- a/website/setup/installation-setup.md +++ b/website/setup/installation-setup.md @@ -28,7 +28,6 @@ but doesn't allow to send transactions such as `sdk.vault.deposit` ```typescript import { StakeWiseSDK, Network } from '@stakewise/v3-sdk' -// sdk with provider allows to call methods to get data and send transactions const sdk = new StakeWiseSDK({ network: Network.Mainnet, provider: new BrowserProvider(window.ethereum, { From f5db2fcc352845b5359a5e03c4a635cf4e34e282 Mon Sep 17 00:00:00 2001 From: MikeDiam Date: Mon, 20 Jan 2025 16:44:56 +0300 Subject: [PATCH 5/5] [docs update] add wagmi example --- website/setup/installation-setup.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/website/setup/installation-setup.md b/website/setup/installation-setup.md index 5c91b743..b5dc7a11 100644 --- a/website/setup/installation-setup.md +++ b/website/setup/installation-setup.md @@ -30,10 +30,9 @@ import { StakeWiseSDK, Network } from '@stakewise/v3-sdk' const sdk = new StakeWiseSDK({ network: Network.Mainnet, - provider: new BrowserProvider(window.ethereum, { - name: 'mainnet', - chainId: Network.Mainnet, - }), + endpoints: { + web3: 'https://mainnet.infura.io/v3/...', + }, }) ```