JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 12
  • Score
    100M100P100Q47334F
  • License Apache-2.0

SecuX Hardware Wallet SOL API

Package Exports

  • @secux/app-sol
  • @secux/app-sol/lib/index.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@secux/app-sol) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

lerna view on npm npm module downloads

@secux/app-sol

SecuX Hardware Wallet SOL API

Usage

import { SecuxSOL } from "@secux/app-sol";

First, create instance of ITransport.


Examples

  1. Get address of bip-32 path.

    • main account
      const path = "m/44'/501'/0'";
      const address = await device.getAddress(path);
      
      /*
      
      // transfer data to hardware wallet by custom transport layer.
      const data = SecuxBTC.prepareAddress(path);
      const response = await device.Exchange(data);
      const address = SecuxBTC.resolveAddress(response, path);
      
      */
    • associated account
      const address = await device.getAddress(
          "m/44'/501'/0'", 
          // USDC
          { mintAccount: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v" }
      );
    • account with seed
      const address = await device.getAddress(
          "m/44'/501'/0'",
          { 
              seed: "seed",
              programId: "Stake11111111111111111111111111111111111111"
          }
      );
  2. Sign transaction.

    • transfer asset

      const { raw_tx } = await device.sign(
          "<recentBlockhash>",
          instructions: [
              {
                  type: "transfer",
                  params: {
                      to: "<reciever account>",
                      lamports: 1e9,
                      path: "m/44'/501'/0'"
                  }
              }
          ]
      );
      
      /*
      
      // transfer data to hardware wallet by custom transport layer.
      const { commandData, serialized } = SecuxSOL.prepareSign(
          "<recentBlockhash>",
          instructions: [
              {
                  type: "transfer",
                  params: {
                      from: "<sender's account>",
                      to: "<reciever's account>",
                      lamports: 1e9,
                      path: "m/44'/501'/0'"
                  }
              }
          ]
      );
      const response = await device.Exchange(commandData);
      const raw_tx = SecuxSOL.resloveTransaction(response, serialized);
      
      */
    • transfer SPL token

      const { raw_tx } = await device.sign(
          "<recentBlockhash>",
          instructions: 
              SecuxSOL.Action.transferToken(
                  {
                      to: "<reciever's account>",
                      owner: "<sender's account>",
                      amount: 1e6,
                      mint: "<token mint account>",
                      decimal: 6,
                      path: "m/44'/501'/0'",
                      // create ATA for reciever
                      createAccount: true
                  }
              )
      );
    • native staking

      const { raw_tx } = await device.sign(
          "<recentBlockhash>",
          instructions: 
              SecuxSOL.Action.stake(
                  {
                      owner: "<main account>",
                      stake: "<stake account>",
                      vote: "<vote account>",
                      lamports: 1e9,
                      path: "m/44'/501'/0'",
      
                      // if give a seed, the createWithSeed instruction will be included.
                      // stake: "<arbitrary string>"
                  }
              )
      );
    • unstake

      const { raw_tx } = await device.sign(
          "<recentBlockhash>",
          instructions: 
              SecuxSOL.Action.unstake(
                  {
                      owner: "<main account>",
                      stake: "<stake account or seed>",
                      lamports: <withdraw amount>,
                      path: "m/44'/501'/0'"
                  }
              )
      );

API Reference

SOL package for SecuX device

Kind: global class


SecuxSOL.addressConvert(publickey, [option]) ⇒ string

Convert ed25519 publickey to SOL address.

Returns: string - address

Param Type Description
publickey string | Buffer ed25519 publickey
[option] ATAOption | SeedOption

SecuxSOL.prepareAddress(path) ⇒ communicationData

Prepare data for SOL address.

Returns: communicationData - data for sending to device

Param Type Description
path string BIP32 path (hardened child key), ex: m/44'/501'/0'/0'

SecuxSOL.resolveAddress(response, [option]) ⇒ string

Generate SOL address from response data.

Returns: string - SOL address

Param Type Description
response communicationData data from device
[option] ATAOption | SeedOption

SecuxSOL.preparePublickey(path) ⇒ communicationData

Prepare data for ed25519 publickey.

Returns: communicationData - data for sending to device

Param Type Description
path string BIP32 path (hardened child key), ex: m/44'/501'/0'/0'

SecuxSOL.resolvePublickey(response) ⇒ string

Resove ed25519 publickey from response data.

Returns: string - ed25519 publickey (hex string)

Param Type Description
response communicationData data from device

SecuxSOL.prepareSign(feePayer, content) ⇒ prepared

Prepare data for signing.

Returns: prepared - prepared object

Param Type Description
feePayer string solana account
content txDetail transaction object

SecuxSOL.resolveSignatureList(response) ⇒ Array.<string>

Reslove signatures from response data.

Returns: Array.<string> - signature array (base58 encoded)

Param Type Description
response communicationData data from device

SecuxSOL.resolveTransaction(response, serialized) ⇒ string

Resolve transaction for broadcasting.

Returns: string - signed transaction (hex)

Param Type Description
response communicationData data from device
serialized communicationData



ATAOption : object

Properties

Name Type Description
mintAccount string token mint address

SeedOption : object

Properties

Name Type Description
seed string arbitary string (UTF-8)
programId string program address

accounts : object

Properties

Name Type Description
publickey string | Buffer Ed25519 publickey
isSigner boolean
isWritable boolean
[path] string the path for signing

Instruction : object

Properties

Name Type Description
programId string program address
accounts accounts
data string | Buffer hex string or buffer

BuiltinInstruction : object

Properties

Name Type Description
type string instruction type
params any parameters

txDetail : object

Properties

Name Type Description
recentBlockhash string a recent blockhash
instructions Array.<(Instruction|BuiltinInstruction)> a least one instruction in a transaction
[feepayerPath] string option for signing via SecuX wallet

prepared : object

Properties

Name Type Description
commandData communicationData data for sending to device
rawTx string unsigned raw transaction


© 2018-22 SecuX Technology Inc.

authors:
andersonwu@secuxtech.com