0.1.0 • Published 2 years ago

chainengine-frontend-sdk v0.1.0

Weekly downloads
-
License
ISC
Repository
-
Last release
2 years ago

ChainEngine

ChainEngine is the simplest blockchain integration platform for a game developer. We provide SDKs, API, and no-code tools to make it easy for a game developer to start building NFT-based games.

To learn more about ChainEngine, please read our Overview or jump right into Quick Start

Chainengine Frontend SDK

Install and Setup

To install Chainengine Frotend SDK to your project:

NPM

npm install --save chainengine-frontend-sdk

YARN

yarn add chainengine-frontend-sdk

Configuration

To use Chainengine Frontend SDK the only parameter you need to provide is the Game ID

import { ChainEngineSdk } from 'chainengine-frontend-sdk';

sdk = new ChainEngineSdk(YOUR_PROJECT_ID);

Connect

In order to authenticate user, sdk.wallet.connect must be called. Uppon the first call, our Provider Selector Modal is displayed so the Player can select how he wants to authenticate.

sdk.wallet.connect MUST be called everytime your page is reloaded, but you probable want to display the Provider Selector Modal only after an user interaction, like when the user clicks on Login button.

In order to call sdk.wallet.connect() only when the user is already authenticated, you can use sdk.isAuthenticatedOrPending():

if (sdk.isAuthenticatedOrPending()) {
  sdk.wallet.connect();
}

Usage

After authenticating your Player you can interact with the other methods of the SDK. Here is the options that are currently available

WALLET

MethodDescriptionParametersReturns
sdk.wallet.connect()Authenticates PlayerApiMode?Promise<void>
sdk.wallet.getApiMode()Gets connected ApiModeApiMode
sdk.wallet.getInfo()Get Player infoIPlayer
sdk.wallet.logout()Remove Player credentialsvoid

IPlayer example

{
 playerId: "40608c49-8a4f-4d0e-b7c5-11db9f0d58cb",
 walletAddress: "0x30B8dE91a8608c3000A28464Ddd4bB8b167F5C52",
 token: {
   sub: "40608c49-8a4f-4d0e-b7c5-11db9f0d58cb",
   walletAddress: "0x30B8dE91a8608c3000A28464Ddd4bB8b167F5C52",
   iat: 1665407792,
   exp: 1667999792,
   jwt: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI0MDYwOGM0OS04YTRmLTRkMGUtYjdjNS0xMWRiOWYwZDU4Y2IiLCJ3YWxsZXRBZGRyZXNzIjoiMHgzMEI4ZEU5MWE4NjA4YzMwMDBBMjg0NjREZGQ0YkI4YjE2N0Y1QzUyIiwiaWF0IjoxNjY1NDA3NzkyLCJleHAiOjE2Njc5OTk3OTJ9.fT9zDtBHKsRuOzVFP4dtnzffaZfUNcBzTICPzRwLKRE"
 },
 authProvider: "google",
 email: "chainengine@chainengine.xyz",
 phoneNumber: null
}

NFT

MethodDescriptionParametersReturns
sdk.nft.getByIdGets a single NFT that belongs to the playerNFTId: stringPromise<IPlayer>
sdk.nft.getAllGets all NFTs that belongs to the PlayerIPaginated<IPlayer>
sdk.nft.transferTransfers a NFT to another Wallet{ walletAddress: string; nftId: string; amount: number; }Promise<void>

INft example

{
  id: "af32e3ed-0de6-4b46-aa5f-18ea21d7f921",
  contractAddress: "0x107aC429D35adAb2e08d7C487000B48B8BA618Cf",
  onChainId: "22",
  chain: "mumbai",
  transactionHash: "0x94ed526e3e1a873b16539eeaf95dc826923d61ff9ba8062c9586f4da4d8016b7",
  accountId: "a0d89369-5524-40c3-bede-cef445633451",
  gameId: "9b45ddac-1714-4af6-addf-4406e2bb054c",
  status: "ONCHAIN",
  metadata: {
    name: "Example NFT",
    description: "This is an Example NFT. It has a huge supply",
    image: "http://api.chainengine.xyz/nfts/af32e3ed-0de6-4b46-aa5f-18ea21d7f921/image",
    attributes: null,
    URI: "ipfs://QmZa9mVH5HJFmoiS5tMTfQi3edbyWMjN9EtYKBBqhyrrMx"
  },
  holders: {
    bf9aad6f-8851-400f-bb3e-1bcb4c1dad9a: 110,
    09c0682a-7f10-4f0d-b83f-fe41949f8458: 100,
    40608c49-8a4f-4d0e-b7c5-11db9f0d58cb: 100
  },
  supply: 999,
  supplyAvailable: 689,
  createdAt: "2022-09-23T14:51:56.010Z"
}

IPaginated example

{
  page: 1,
  offset: 0,
  total: 10,
  items: [
    {
      nfts: INft[]
    }
  ]
}

MARKETPLACE

MethodDescriptionParametersReturns
sdk.marketplace.getListingsGets listings related to the GamePromise<ListingResponseDto[]>
sdk.marketplace.getListingGets a single ListinglistingId: stringPromise<ListingResponseDto>
sdk.marketplace.buyBuy a listing offerlistindId: stringPromise<ContractTransaction>

ListingResponseDto example

{
    id: "b87bf781-7283-4ddd-bba9-2eedd300d284",
    nft: INft,
    amount: 10,
    price: 1,
    receiverWallet: "0x359ea9Bc6d3c771d18905dB828ed5c4a655B61d2",
    protocolOffer: {
      parameters: {
        offerer: "0x59F06e983964bA5DD9b788f33fa1e5201b6BdDb3",
        zone: "0x0000000000000000000000000000000000000000",
        zoneHash: "0x3000000000000000000000000000000000000000000000000000000000000000",
        startTime: "1664999732",
        endTime: "115792089237316195423570985008687907853269984665640564039457584007913129639935",
        orderType: 0,
        offer: [
          {
            itemType: 3,
            token: "0x107aC429D35adAb2e08d7C487000B48B8BA618Cf",
            identifierOrCriteria: "22",
            startAmount: "10",
            endAmount: "10"
          }
        ],
        consideration: [
          {
            itemType: 0,
            token: "0x0000000000000000000000000000000000000000",
            identifierOrCriteria: "0",
            startAmount: "1000000000000000000",
            endAmount: "1000000000000000000",
            recipient: "0x359ea9Bc6d3c771d18905dB828ed5c4a655B61d2"
          }
        ],
        totalOriginalConsiderationItems: 1,
        salt: "0x00000000d86e742f62e10600",
        conduitKey: "0x0000000000000000000000000000000000000000000000000000000000000000",
        counter: 0
      },
      signature: "string-with-signature"
    },
    status: "active"
  }