@ic-wallet-kit/icrc
v0.0.3
Published
Ic middleware wallet ICRC protocol
Downloads
5
Readme
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/icrcConfiguration
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:
| Param | Description | | ------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | | IdentifierService | Middleware identity services | | RxStorage | RxDb storage. Dependent from app environment. Find more info at https://rxdb.info/rx-storage.html | | IStorage | Storage for cache and other temporal data of middleware, could be either memory storage or local storage in the browser | | ILogger | Interface of middleware logs. | | AssetManagerConfiguration | Asset data configuration | | TransactionManagerConfiguration | Transaction configuration | | RefreshServiceConfiguration | Refresh Service configuration | | ReplicationConfiguration | Replication configuration | | createIcrcCanisterFunc | Function 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
Function
Public functions for work with handlers. List of functions.
