0.0.3 • Published 11 months ago

@ic-wallet-kit/icrc v0.0.3

Weekly downloads
-
License
Apache-2.0
Repository
github
Last release
11 months ago

ICRC

ICRC is a library for Internet Computer Network. This library allows users to manage their digital assets and perform transactions with major ICRC cryptocurrencies.


Installation

To install this library to an external project, follow the procedure:

npm install @ic-wallet-kit/common
npm install @ic-wallet-kit/icrc

Configuration

Use IcrcInitializer to register initial containers and init middleware process

  • IcrcInitializer.build - Register all initial containers.
  • IcrcInitializer.init - Init background middleware process. Like RxDb and replication of it.
  • IcrcInitializer.logout - Destroy all containers.

The IcrcInitializer.build function takes the parameters:

ParamDescription
IdentifierServiceMiddleware identity services
RxStorageRxDb storage. Dependent from app environment. Find more info at https://rxdb.info/rx-storage.html
IStorageStorage for cache and other temporal data of middleware, could be either memory storage or local storage in the browser
ILoggerInterface of middleware logs.
AssetManagerConfigurationAsset data configuration
TransactionManagerConfigurationTransaction configuration
RefreshServiceConfigurationRefresh Service configuration
ReplicationConfigurationReplication configuration
createIcrcCanisterFuncFunction to connect with replication canister

Example

import { IdentifierService, RefreshServiceConfiguration, ReplicationConfiguration } from "@ic-wallet-kit/common";
import { AssetManagerConfiguration, IcrcInitializer, TransactionManagerConfiguration } from "@ic-wallet-kit/icrc";
import { getRxStorageMemory } from "rxdb/plugins/storage-memory";
import { createActor } from "./database/candid";
import "reflect-metadata";
import { HttpAgent } from "@dfinity/agent";
import { Ed25519KeyIdentity } from "@dfinity/identity";
import { Logger } from "@app/main";

(async () => {
    const logger = new Logger();

    const seedBuf = new Uint8Array(new ArrayBuffer(32));
    seedBuf.set(new TextEncoder().encode("seed"));
    const secpIdentity = Ed25519KeyIdentity.generate(seedBuf);

    const agent = await HttpAgent.create({
        identity: secpIdentity,
        verifyQuerySignatures: false,
        host: "https://identity.ic0.app",
        retryTimes: 10
    });

    const identifierService = new IdentifierService(agent, secpIdentity);

    const assetManagerConfiguration: AssetManagerConfiguration = {
        defaultDateTimeFormat: "MM/DD/YYYY HH:mm"
    };

    const transactionManagerConfiguration: TransactionManagerConfiguration = {
        icpUrl: "https://rosetta-api.internetcomputer.org",
        ogyUrl: "https://rosetta-ogy.origyn.ch",
        icpNetwork: "00000000000000020101",
        ogyNetwork: "00000000012000b90101",
        icpBlockchain: "Internet Computer",
        ogyBlockchain: "ORIGYN Foundation"
    };

    const refreshServiceConfiguration: RefreshServiceConfiguration =
    {
        refreshIntervalMinutes: 2,
        enable: false
    };

    const icrcReplicationConfiguration: ReplicationConfiguration = {
        enable: false,
        host: "http://127.0.0.1:8000/",
        replicaCanister: "bd3sg-teaaa-aaaaa-qaaba-cai"
    }

    IcrcInitializer.build(
        identifierService,
        getRxStorageMemory(),
        localStorage,
        logger,
        assetManagerConfiguration,
        transactionManagerConfiguration,
        refreshServiceConfiguration,
        icrcReplicationConfiguration,
        createActor
   	);

    await IcrcInitializer.init();
})()

ICRC Modules

ICRC Assets

ICRC Allowance

ICRC Contact

ICRC Service

ICRC Tokens

ICRC Transaction


Function

Public functions for work with handlers. List of functions.