Socket
Socket
Sign inDemoInstall

@mirror-protocol/mirror.js

Package Overview
Dependencies
119
Maintainers
6
Versions
34
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    @mirror-protocol/mirror.js

The JavaScript SDK for Mirror Protocol


Version published
Maintainers
6
Created

Readme

Source

Mirror.js

Mirror.js is a client SDK for building applications that can interact with Mirror Protocol from within JavaScript runtimes, such as web browsers, server backends, and on mobile through React Native.

You can find a reference of the Mirror.js API here.

Getting Mirror.js

Mirror.js is available as a package on NPM and is intended to be used alongside Terra.js.

Add both:

  • @terra-money/terra.js
  • @mirror-protocol/mirror.js

To your JavaScript project's package.json as dependencies using your preferred package manager:

$ npm install -S @terra-money/terra.js @mirror-protocol/mirror.js

Usage

Mirror object

Mirror.js provides facilities for 2 main use cases:

  • query: runs smart contract queries through LCD
  • execute: creates proper MsgExecuteContract objects to be used in transactions

Both of these functions are accessible through the Mirror object.

To create the Mirror object:

import { LCDClient } from '@terra-money/terra.js';
import { Mirror } from '@mirror-protocol/mirror.js';

// default -- uses Columbus-5 core contract addresses
const mirror = new Mirror();

// optional -- specify contract addresses and assets
const mirror = new Mirror({
  lcd: new LCDClient(...),
  key: new MnemonicKey(), // or other Terra.js-compliant key
  collector: 'terra1...',
  community: 'terra1...',
  factory: 'terra1...',
  gov: 'terra1...',
  mint: 'terra1...',
  oracle: 'terra1...',
  staking: 'terra1...',
  mirrorToken: 'terra1...',
  terraswapFactory: 'terra1...',
  assets: {
    MIR: {
      name: 'Mirror',
      symbol: 'MIR',
      token: 'terra1...', // Terraswap token contract
      lpToken: 'terra1...', // Terraswap LP token contract
      pair: 'terra1...', // Terraswap pair contract against UST
    },
    mAAPL: {
      name: 'Mirrored Apple, Inc. stock',
      symbol: 'mAAPL',
      token: 'terra1...', // Terraswap token contract
      lpToken: 'terra1...', // Terraswap LP token contract
      pair: 'terra1...', // Terraswap pair contract against UST
    },
    ...
  }
});

Query

The Mirror object contains contract queries for all of the Mirror core contracts, which it will run against the provided LCDClient.

async function main() {
  const result = await mirror.factory.getConfig();
}

main().catch(console.error);

Each contract has various query operations, which you can discover in the reference API documentation.

Executing

The Mirror object contains functions for generating proper MsgExecuteContract messages to be included in a transaction and broadcasted.

const wallet = mirror.lcd.wallet(mirror.key);

async function sendMIR() {
  const tx = await wallet.createAndSignTx({
    msgs: [mirror.mirrorToken.transfer('terra1...', 1_000_000)],
    fee: new StdFee(200_000, { uluna: 20_000_000 })
  });
  return await mirror.lcd.tx.broadcast(tx);
}

async function stakeLPTokens() {
  const { mAAPL } = mirror.assets;
  const tx = await wallet.createAndSignTx({
    msgs: [
      mirror.staking.bond(
        mAAPL.token.contractAddress,
        500_000_000,
        mAAPL.lpToken
      )
    ],
    fee: new StdFee(200_000, { uluna: 20_000_000 })
  });
  return await mirror.lcd.tx.broadcast(tx);
}

async function main() {
  await sendMIR();
  await stakeLPTokens();
}

main().catch(console.error);

License

This software is licensed under the Apache 2.0 license. Read more about it here.

© 2020 Mirror Protocol

Keywords

FAQs

Last updated on 29 Nov 2021

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc