1.1.7 • Published 5 months ago

@luffalab/luffa-endless-sdk v1.1.7

Weekly downloads
-
License
ISC
Repository
-
Last release
5 months ago

SDK for Luffa Endless Wallet

Install

npm install @luffalab/luffa-endless-sdk npm install @endlesslab/endless-ts-sdk

Usage

import {
  Network,
  EntryFunctionABI,
  TypeTagAddress,
  TypeTagU128,
  AccountAddress,
  EndlessConfig,
  Endless,
  AccountAuthenticator
} from '@endlesslab/endless-ts-sdk'

import {
  EndlessLuffaSdk,
  UserResponseStatus,
  EndlessSignAndSubmitTransactionInput,
  EndlessWalletTransactionType,
  EndLessSDKEvent,
} from '@luffalab/luffa-endless-sdk';

const jssdk = new EndlessLuffaSdk({
  // mainnet or testnet
  network: 'testnet',
});

const connectWalletHandler = async () => {
  const connectRes = await jssdk.connect();
  if (connectRes.status === UserResponseStatus.APPROVED) {
  console.log('connectRes =====>', connectRes.args.account);
}
};

const disconnectWalletHandler = () => {
  jssdk.disconnect().then(() => {
    console.log('disconnect success');
  });
};

const getAccountHandler = async () => {
  const getAccountRes = await jssdk.getAccount();

  if (getAccountRes.status === UserResponseStatus.APPROVED) {
    console.log('getAccountRes =====>', getAccountRes.args.account);
  }
};

const signMessageHandler = async () => {
  if (!signMessage || !accountAddress) {
    return;
  }

  const signMessageRes = await jssdk.signMessage({ message: signMessage });

  if (signMessageRes.status === UserResponseStatus.APPROVED) {
    setSignature(signMessageRes.args.signature.toString());
  }
};

const signAndSubmitTrancactionHandler = async () => {
  if (!accountAddress) {
    alert('please connect wallet');
    return;
  }

  if (!toAccountAddress || !transferAmount) {
    alert('please input toAccountAddress and transferAmount');
    return;
  }

  const transferEDSAbi: EntryFunctionABI = {
    typeParameters: [],
    parameters: [new TypeTagAddress(), new TypeTagU128()],
  };

  const transferData: EndlessSignAndSubmitTransactionInput = {
    payload: {
      function: '0x1::endless_account::transfer',
      functionArguments: [
        AccountAddress.fromBs58String(toAccountAddress),
        BigInt(parseInt(transferAmount) * 100000000),
      ],
      abi: transferEDSAbi,
    },
  };

  const transactionRes = await jssdk.signAndSubmitTransaction(transferData);
  if (transactionRes.status === UserResponseStatus.APPROVED) {
    console.log('signAndSubmitTransaction transactionRes =====>', transactionRes);
  }
};

const signTrancactionHandler = async () => {
  const config = new EndlessConfig({
    network: Network.TESTNET
  })
  const endless = new Endless(config)
  if (!accountAddress) {
    alert('please connect wallet');
    return;
  }

  const transferData: EndlessSignAndSubmitTransactionInput = {
    payload: {
      function: '0x1::endless_account::transfer',
      functionArguments: [
        AccountAddress.fromBs58String(toAccountAddress),
        BigInt(parseInt(transferAmount) * 100000000),
      ],
      abi: transferEDSAbi,
    },
  };

  const txn = await endless.transaction.build.simple({
    sender: accountAddress,
    data: transferData.payload
  });
  // EndlessWalletTransactionType.MULTI_AGENT
  const transactionRes = await jssdk.signTransaction(txn, EndlessWalletTransactionType.SIMPLE);
  if (transactionRes.status === UserResponseStatus.APPROVED) {
    console.log('signTransaction transactionRes =====>', transactionRes);
    const data = Hex.fromHexString(transactionRes.args.data).toUint8Array();
    const deserializer = new Deserializer(data);
    const txnRes = AccountAuthenticator.deserialize(deserializer);
    console.log('AccountAuthenticator deserializer', txnRes);
  }
};

jssdk.on(EndLessSDKEvent.CONNECT, (res) => {
  console.log('connect', res);
});

const disconnectHandler = () => {
  console.log('disconnect');
}
jssdk.on(EndLessSDKEvent.DISCONNECT, disconnectHandler);
jssdk.off(EndLessSDKEvent.DISCONNECT, disconnectHandler);
1.1.7

5 months ago

1.1.6

5 months ago

1.1.5

7 months ago

1.1.4

7 months ago

1.1.3

7 months ago

1.1.2

7 months ago

1.1.1

7 months ago

1.1.0

7 months ago

1.0.9

7 months ago

1.0.8

7 months ago

1.0.7

7 months ago

1.0.6

7 months ago

1.0.5

7 months ago

1.0.4

7 months ago

1.0.3

7 months ago

1.0.2

7 months ago

1.0.1

7 months ago

1.0.0

8 months ago