API client

The Lisk Elements API Client provides a convenient wrapper for interacting with the public API of nodes on the Lisk network.

Please use the apiClient of the lisk-client package for all code that runs in the browser

Installation

This adds Lisk Client as a dependency of your project:

$ npm install @liskhq/lisk-api-client

Upgrade

npm update @liskhq/lisk-api-client

APIClient interface

interface APIClient {
  public disconnect() => Promise<void>;
  public async invoke<T>(actionName: string, params?: Record<string, unknown>): Promise<T>
  public subscribe(eventName: string, cb: EventCallback): void
  public transaction: {
    get: (id: Buffer) => Promise<Record<string, unknown>>,
    getFromPool: () => Promise<Record<string, unknown>[]>,
    create: (
      input: {
        moduleID?: number; // id takes priority
        moduleName?: number;
        assetID?: number; // id takes priority
        assetName?: number;
        fee: bigint;
        nonce: bigint;
        senderPublicKey: Buffer;
        asset: Record<string, unknown>;
        signatures?: Buffer[];
      },
      passphrase: string,
      options?: {
        nonce?: bigint;
        includeSenderSignature?: boolean;
        multisignatureKeys?: {
          mandatoryKeys: Buffer[];
          optionalKeys: Buffer[];
        };
      },
    ) => Promise<Record<string, unknown>>;
    sign: (transaction: Record<string, unknown>, passphrases: string[], options?: {
      includeSenderSignature?: boolean;
      multisignatureKeys?: {
        mandatoryKeys: Buffer[];
        optionalKeys: Buffer[];
      };
    }) => Promise<Record<string, unknown>>;
    send: (input: Record<string, unknown>) => Promise<void>;
    getMinFee: (tx: Record<string, unknown>) => bigint;
    encode: (input: Record<string, unknown>) => Buffer;
    decode: (input: Buffer) => Record<string, unknown>;
    toJSON(transaction: Record<string, unknown>) => Record<string, unknown>;
    fromJSON(transaction: Record<string, unknown>) => Record<string, unknown>;
  }
  public node: {
    getNodeInfo: () => Promise<Record<string, unknown>>;
    getNetworkStats: () => Promise<Record<string, unknown>>;
    getConnectedPeers: () => Promise<Peer[]>;
    getDisconnectedPeers: () => Promise<Peer[]>;
  }
  public block: {
    get: (id: Buffer) => Promise<Record<string, unknown>>;
    getByHeight: (height: number) => Promise<Record<string, unknown>>;
    encode: (input: Record<string, unknown>) => Buffer;
    decode: (input: Buffer) => Record<string, unknown>;
    toJSON(
		block: BlockType,
	) => {
		header: Record<string, unknown>;
		payload: Record<string, unknown>[];
	};
	fromJSON(
		block: BlockType<string>,
	) => {
		header: Record<string, unknown>;
		payload: Record<string, unknown>[];
	};
  }
  public account: {
    get: (address: Buffer) => Promise<Record<string, unknown>>;
    encode: (input: Record<string, unknown>) => Buffer;
    decode: (input: Buffer) => Record<string, unknown>;
    toJSON(account: Record<string, unknown>) => Record<string, unknown>;
    fromJSON(account: Record<string, unknown>) => Record<string, unknown>;
  }
}