0.0.60 • Published 1 year ago

@samudai_xyz/web3-sdk v0.0.60

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

web3-sdk-samudai

All in one web3 integrations for Samudai

Current Integrations on SDK

SDK currently has the following for the web3 integrations

  • Gnosis - Gnosis for onchain payments
  • Lit Protocol - For token gating
  • NFT-PPFs - Fetching of NFT profile photos for users
  • SIWE - Sign in with ethereum
  • Snapshot - Snapshot for proposals

Installation

Dillinger requires Node.js.

npm i web3-sdk-samudai

Usage

The SDK has the following components and the below table provides an overview to initialize them.

PluginREADME
Gnosisconst gnosis = new Gnosis(provider: Web3Provider, chaindId: number)
Lit Protocolconst litProtocol = new LitProtocol()
NFT PPFsconst nftPPfs = new NFTProfile()
SIWEconst siwe = new Siwe(provider: Web3Provider)
Snapshotconst snapshot = new Snapshot(spaceId: string, networkType: number, provider: Web3Provider)

Gnosis APIs

Gnosis APis are used to create transactions on the multisig and fetch transactions.

To use Gnosis

Initialize gnosis:

const gnosis = new Gnosis(provider: Web3Provider, chaindId: number)

To create a single gnosis transaction

const result = await gnosis.createSingleGnosisTx(receiverAddress: string, value: string,
safeAddress: string, senderAddress: string)

Param 1: safeAddress Gnosis safe address. Param 2: receiverAddress Wallet address of the user whom the funds is being sent. Param 3: value ETH value in wei. Param 4: senderAddress Waller address of the sender

To create a batch gnosis transaction

const result = await gnosis.createBatchGnosisTx(safeAddress: string, receiverAddresses: string[],
value: string, senderAddress: string)

Param 1: safeAddress Gnosis safe address. Param 2: receiverAddresses Wallet addresses of the users whom the funds is being sent. Param 3: value ETH value in wei. Param 4: senderAddress Waller address of the sender

To get pending transactions for a safe

const result = await gnosis.getPendingTransactions(safeAddress: string)

Param 1: safeAddress Gnosis safe address.

Example

const result = await gnosis.getPendingTransactions("0xE666431e8Ba10B17D296aB16A4FF8d9A552eb488")

To get past / executed transactions for a safe

const result = await gnosis.getExecutedTransactions(safeAddress: string)

Param 1: safeAddress Gnosis safe address.

Example

const result = await gnosis.getExecutedTransactions("0xE666431e8Ba10B17D296aB16A4FF8d9A552eb488")

To get transactions details, status of a transactions for a safe transaction hash

const result = await gnosis.getTransactionDetails(safeTxHash: string)

Param 1: safeTxHash Transaction hash of a particular safe transaction.

Example

const result = await gnosis.getTransactionDetails("0x4a429ae97dd5bac92e9eef8e28fba94cf8813474c485228e58d81f04c332c399")

To connect a gnosis safe

const result = await gnosis.connectGnosis(userAddress: string)

Param 1: userAddress User address

This will return the safes for which user is an owner and also list of all other owners for a safe

Example

const result = await gnosis.gnosisConnect("0x4a429ae97dd5bac92e9eef8e28fba94cf8813474c485228e58d81f04c332c399")

NFT Profile APIs

NFT Profile APIs are used to fetch the NFTs owned by the user on ETH and Polygon which can later be set as profile photos

Initialize NFT Profile Photos:

const nftProfile = new NFTProfile()

To get ETH based NFTs

const ethNFTs = await nftProfile.getEthProfilePPs(ethUserAddress: string)

Param 1: ethUserAddress Wallet Address of the user.

Example

const ethNFTs = await nftProfile.getEthProfilePPs(0xB1BFB38a527D05442D48068ca9798FD3E5d6ce0F)

To get Polygon based NFTs

const polygonNFTs = await nftProfile.getMaticProfilePPs(maticUserAddress: string)

Param 1: maticUserAddress Wallet Address of the user.


Lit Protocol APIs

Lit Protocol APIs are used to for token gating

To use Lit Protocol

Initialize Lit Protocol:

const litProtocol = new LitProtocol()

To create a Lit protocol gating

const tokenGating = await litProtocol.init(
    chain: string,
    contractAddress: string,
    typeOfGating: TokenGatingType,
    baseUrl: string,
    path: string,
    memberId: string,
    tokenId?: string
)

Param 1: chain The chain on which the Token Gating will be created. Refer the list of chains below the example. Param 2: contractAddress Contract Address of the Token. Param 3: typeOfGating Enum value of which type of Gating. Refer the enum list below the example. Param 4: baseUrl Url of the url of frontend. Param 5: path The Path that requires the token gating. Param 6: memberId Member UUID that is being authenticated. Param 7: tokenId Token ID of a NFT for verification.

Returns: jwt JWT token can be set on cookies or anything on the frontend and needs to be sent to SDK for verification

Example

const tokenGating = await litProtocol.init(
    chain: "rinkeby",
    contractAddress: "0xB1BFB38a527D05442D48068ca9798FD3E5d6ce0F",
    typeOfGating: 0,
    baseUrl: "http://samudai.xyz",
    path: '/dao/f298865a-c3a3-46e1-8ff6-ffd63ec23257',
    memberId: aaaff17d-c166-430d-9afc-82c88394c7b8,
)

List of chains | chain | | ------ | | ethereum | | rinkeby | | polygon | | goerli | | mumbai |

For further chain supports based on EVM use the following list https://developer.litprotocol.com/supportedChains

Enum for TokenGatingType

enum TokenGatingType = {
  ERC20,
  ERC721,
  ERC1155,
}

ERC20 = 0
ERC721 = 1
ERC1155 = 2

To verify the user

const result = await litProtocol.verifyLit(jwt: string, memberId: string)

Param 1: jwt JWT generated by the init functionality. Param 2: memberId Member UUID

Returns: verifyLit returns true / false based on the access conditions


SIWE

SIWE is used for Sign in with ethereum

To use SIWE

Initialize SIWE:

const siwe = new Siwe(provider: Web3Provider)

To sign in user, you need to ask the user to sign a message and push the users to required screen after successful signing

const result = siwe.walletSignIn(domain: string)

Param 1: domain URL of the frontend

Example

const result = siwe.walletSignIn("https://samudai.xyz")

Snapshot

Snapshot is used for fetching proposals and voting for them.

To use snapshot

Initialize Snapshot:

const snapshot = new Snapshot(spaceId: string, networkType: number, provider: Web3Provider)

Param 1: spaceId Space ID in Snapshot Param 2: networkType 0 for Ethereum, 1 for testnets Param 3: provider Web3Provider

Example

const snapshot = new Snapshot("biryani.eth", 1, provider)

To get information about a Space

const result = snapshot.getSpace()

To get active proposals

const result = snapshot.getActiveProposals()

To get Recent proposals

const result = snapshot.getRecentProposals()

To cast a vote

const result = snapshot.castVote(proposalId: string, choice: number,account: any)
0.0.60

1 year ago

0.0.59

1 year ago

0.0.58

1 year ago

0.0.57

2 years ago

0.0.56

2 years ago

0.0.55

2 years ago

0.0.54

2 years ago

0.0.53

2 years ago

0.0.52

2 years ago

0.0.51

2 years ago

0.0.48-alpha

3 years ago

0.0.47-alpha

3 years ago

0.0.46-alpha

3 years ago

0.0.45-alpha

3 years ago

0.0.44-alpha

3 years ago

0.0.43-alpha

3 years ago

0.0.42-alpha

3 years ago

0.0.41-alpha

3 years ago

0.0.40-alpha

3 years ago

0.0.39-alpha

3 years ago

0.0.38-alpha

3 years ago

0.0.37-alpha

3 years ago

0.0.36-alpha

3 years ago

0.0.35-alpha

3 years ago

0.0.34-alpha

3 years ago

0.0.33-alpha

3 years ago

0.0.32-alpha

3 years ago

0.0.31-alpha

3 years ago

0.0.29-alpha

3 years ago

0.0.28-alpha

3 years ago

0.0.27-alpha

3 years ago

0.0.26-alpha

3 years ago

0.0.25-alpha

3 years ago

0.0.24-alpha

3 years ago

0.0.23-alpha

3 years ago

0.0.22-alpha

3 years ago

0.0.21-alpha

3 years ago

0.0.20-alpha

3 years ago

0.0.19-alpha

3 years ago

0.0.18-alpha

3 years ago

0.0.17-alpha

3 years ago

0.0.16-alpha

3 years ago

0.0.15-alpha

3 years ago

0.0.14-alpha

3 years ago

0.0.13-alpha

3 years ago

0.0.12-alpha

3 years ago

0.0.11-alpha

3 years ago

0.0.10-alpha

3 years ago

0.0.8-alpha

3 years ago