diff --git a/README.md b/README.md
index f68949d..fa3741e 100644
--- a/README.md
+++ b/README.md
@@ -236,17 +236,7 @@ pnpm i --global parcel
```
```bash
-# Using ethers.js
-parcel tests/testEthersJs.html
-
-# Using window.ethereum
-parcel tests/testWindowEthereum.html
-```
-
-Then open a server, for example with [`serve`](https://github.com/vercel/serve)
-
-```bash
-serve dist/ -p 5555
+parcel tests/browser/index.html
```
## License
diff --git a/package.json b/package.json
index 053f6b0..24c28e2 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "nemeos-sdk",
- "version": "0.1.3",
+ "version": "0.1.4",
"type": "module",
"description": "Nemeos SDK to facilitate integration with the Nemeos platform",
"license": "MIT",
@@ -40,6 +40,6 @@
"ofetch": "^1.3.4"
},
"devDependencies": {
- "typescript": "^5.5.3"
+ "typescript": "^5.5.4"
}
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 92cbbd3..b049898 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -16,8 +16,8 @@ importers:
version: 1.3.4
devDependencies:
typescript:
- specifier: ^5.5.3
- version: 5.5.3
+ specifier: ^5.5.4
+ version: 5.5.4
packages:
@@ -53,13 +53,13 @@ packages:
tslib@2.4.0:
resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==}
- typescript@5.5.3:
- resolution: {integrity: sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==}
+ typescript@5.5.4:
+ resolution: {integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==}
engines: {node: '>=14.17'}
hasBin: true
- ufo@1.5.3:
- resolution: {integrity: sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==}
+ ufo@1.5.4:
+ resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==}
ws@8.17.1:
resolution: {integrity: sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==}
@@ -108,12 +108,12 @@ snapshots:
dependencies:
destr: 2.0.3
node-fetch-native: 1.6.4
- ufo: 1.5.3
+ ufo: 1.5.4
tslib@2.4.0: {}
- typescript@5.5.3: {}
+ typescript@5.5.4: {}
- ufo@1.5.3: {}
+ ufo@1.5.4: {}
ws@8.17.1: {}
diff --git a/tests/browser/index.html b/tests/browser/index.html
new file mode 100644
index 0000000..97092c7
--- /dev/null
+++ b/tests/browser/index.html
@@ -0,0 +1,31 @@
+
+
+
+
+
+ Document
+
+
+ Nemeos SDK Test
+
+
+ Is wallet connected?
+ ---
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/browser/script.ts b/tests/browser/script.ts
new file mode 100644
index 0000000..ec46932
--- /dev/null
+++ b/tests/browser/script.ts
@@ -0,0 +1,90 @@
+import * as ethers from 'ethers'
+import { getBrowserProvider, NemeosSDK } from '../../src/index.js'
+
+declare global {
+ interface Window {
+ ethereum: any
+ }
+}
+
+let signer: ethers.Signer
+let nemeosSdk: NemeosSDK
+let nemeosPoolBuyOpenSeaClient: ReturnType
+
+const nemeosPoolAddress = '0x812db15b8Bb43dBA89042eA8b919740C23aD48a3'
+const cyberKongzAddress = '0x15cd1cfCd48C06cfC44D433D66C7a9fE06b2C2c3'
+
+export async function isMetamaskConnected() {
+ if (!window.ethereum) return false
+
+ try {
+ const _provider = new ethers.BrowserProvider(window.ethereum)
+ const accounts = await _provider.send('eth_accounts', [])
+ const accounts2 = await window.ethereum.request({ method: 'eth_accounts' })
+
+ if (accounts.length !== accounts2.length || accounts[0] !== accounts2[0]) {
+ throw new Error('Metamask accounts are not the same when using ethers.js and window.ethereum.request')
+ }
+
+ console.log('[isMetamaskConnected] Metamask is connected', { accounts })
+ return accounts && accounts.length > 0
+ } catch (error) {
+ console.error('[isMetamaskConnected] There was an error while trying to connect to Metamask isMetamaskConnected()', { error })
+ return false
+ }
+}
+
+function setWalletConnected(bool: boolean) {
+ document.getElementById('isConnected')!.innerText = `${bool}`
+}
+
+async function connectWallet() {
+ const provider1 = new ethers.BrowserProvider(window.ethereum)
+ const signer1 = await provider1.getSigner()
+ const address1 = await signer1.getAddress()
+
+ const provider2 = getBrowserProvider(window.ethereum)
+ const signer2 = await provider2.getSigner()
+ const address2 = await signer2.getAddress()
+
+ if (address1 !== address2) {
+ throw new Error('Addresses are not the same when using ethers.js and window.ethereum.request')
+ }
+
+ signer = signer1
+ nemeosSdk = new NemeosSDK(signer)
+ nemeosPoolBuyOpenSeaClient = nemeosSdk.getNemeosPoolClient({
+ nemeosPoolAddress,
+ nftCollectionAddress: cyberKongzAddress,
+ nemeosPoolMode: NemeosSDK.NemeosPoolMode.BuyOpenSea,
+ })
+
+ setWalletConnected(true)
+}
+
+async function startLoan() {
+ await nemeosPoolBuyOpenSeaClient.startLoan(224, 90)
+}
+async function retrieveLoan() {
+ await nemeosPoolBuyOpenSeaClient.retrieveLoan(224)
+}
+async function payNextLoanStep() {
+ await nemeosPoolBuyOpenSeaClient.payNextLoanStep(224)
+}
+
+function addEventListeners() {
+ document.getElementById('connectWallet')!.addEventListener('click', connectWallet)
+ document.getElementById('startLoan')!.addEventListener('click', startLoan)
+ document.getElementById('retrieveLoan')!.addEventListener('click', retrieveLoan)
+ document.getElementById('payNextLoanStep')!.addEventListener('click', payNextLoanStep)
+}
+
+document.addEventListener('DOMContentLoaded', async () => {
+ addEventListeners()
+ if (await isMetamaskConnected()) {
+ setWalletConnected(true)
+ connectWallet()
+ } else {
+ setWalletConnected(false)
+ }
+})
diff --git a/tests/testEthersJs.html b/tests/testEthersJs.html
deleted file mode 100644
index 35a9313..0000000
--- a/tests/testEthersJs.html
+++ /dev/null
@@ -1,98 +0,0 @@
-
-
-
-
-
- Document
-
-
- Nemeos SDK Test
-
-
- Is wallet connected?
- ---
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/tests/testWindowEthereum.html b/tests/testWindowEthereum.html
deleted file mode 100644
index 18df7c1..0000000
--- a/tests/testWindowEthereum.html
+++ /dev/null
@@ -1,96 +0,0 @@
-
-
-
-
-
- Document
-
-
- Nemeos SDK Test
-
-
- Is wallet connected?
- ---
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-