0.0.5 • Published 7 months ago

@ic-wallet-kit/hpl v0.0.5

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

HPL Wallet

HPL Wallet is a library for the high-performance ledger. This library allows users to manage their digital assets and perform transactions with major HPL system.


Installation

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

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

Configuration

Use HplInitializer to register initial containers and init middleware process

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

The HplInitializer.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.
RefreshServiceConfigurationRefresh Service configuration
ReplicationConfigurationReplication configuration.
CanisterServiceCanister Service configuration.
createHplCanisterFuncFunction to connect with replication canister.

Example

import { Logger } from "@app/main";
import { HttpAgent } from "@dfinity/agent";
import { IdentifierService, RefreshServiceConfiguration, ReplicationConfiguration } from "@ic-wallet-kit/common";
import { CanisterService, HplInitializer } from "@ic-wallet-kit/hpl";
import "reflect-metadata";
import { getRxStorageMemory } from "rxdb/plugins/storage-memory";
import { createActor as hplCreator } from "./database/candid/hpl";

(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 refreshServiceConfiguration: RefreshServiceConfiguration =
    {
        refreshIntervalMinutes: 2,
        enable: false // enable if need auto-refresh data
    };

    const canisterService = new CanisterService("dodxy-giaaa-aaaaj-azula-cai",
        "lpwlq-2iaaa-aaaap-ab2vq-cai",
        "n65ik-oqaaa-aaaag-acb4q-cai");

    const hplReplicationConfiguration: ReplicationConfiguration = {
        enable: false, // enable if need sync with remote RxDB
        host: "http://127.0.0.1:8000/",
        replicaCanister: "bkyz2-fmaaa-aaaaa-qaaaq-cai"
    }


    HplInitializer.build(
        identifierService,
        getRxStorageMemory(),
        localStorage,
        logger,
        refreshServiceConfiguration,
        hplReplicationConfiguration,
        canisterService,
        hplCreator);

    await HplInitializer.init();
})()

HPL Modules

HPL Assets - asset handlers facilitate operations related to Assets. Each handler is responsible for a specific action such as adding, updating, checking, or removing assets.

HPL Account - account handlers facilitate operations related to Accounts. Each handler is responsible for a specific action such as adding, updating, checking, or removing account.

HPL Virtual Account - virtual account handlers facilitate operations related to Virtual Accounts. Each handler is responsible for a specific action such as adding, updating, checking, or removing virtual account.

HPL Contact - contact handlers manage and process contacts. These handlers provide functionality for adding, updating, and removing contacts.

HPL Check Principal - principal handlers responsible for checking principal of canister.

HPL Transfer - transfer handlers responsible for transfer from account or link to account or link.


Function

Public functions for work with handlers. List of functions.