PHP WebShell
Текущая директория: /usr/lib/node_modules/bitgo/node_modules/@bitgo/sdk-coin-icp/dist/src/lib
Просмотр файла: icpAgent.js
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.IcpAgent = void 0;
const principal_1 = require("@dfinity/principal");
const ic0_1 = require("ic0");
const utils_1 = __importDefault(require("./utils"));
const iface_1 = require("./iface");
const bignumber_js_1 = __importDefault(require("bignumber.js"));
class IcpAgent {
constructor(host) {
this.host = host;
}
/**
* Creates a new HTTP agent for communicating with the Internet Computer.
* @returns An instance of HttpAgent.
*/
createAgent() {
return new ic0_1.HttpAgent({
host: this.host,
fetch,
verifyQuerySignatures: false,
});
}
/**
* Retrieves an instance of the ledger canister agent.
*
* This method creates a new agent using `createAgent()`, initializes a replica interface
* with the agent (configured for local use), and returns an `AgentCanister` instance
* for the ledger canister identified by `LEDGER_CANISTER_ID`.
*
* @returns {AgentCanister} An agent interface for interacting with the ledger canister.
*/
getLedger() {
const agent = this.createAgent();
const ic = (0, ic0_1.replica)(agent, { local: true });
return ic(principal_1.Principal.fromUint8Array(iface_1.LEDGER_CANISTER_ID).toText());
}
/**
* Fetches the account balance for a given principal ID.
* @param principalId - The principal ID of the account.
* @returns Promise resolving to the account balance as a string.
* @throws Error if the balance could not be fetched.
*/
async getBalance(principalId) {
try {
if (!principalId) {
throw new Error('Principal ID is required');
}
const ledger = this.getLedger();
const account = {
owner: principal_1.Principal.fromText(principalId),
subaccount: [utils_1.default.hexToBytes(iface_1.DEFAULT_SUBACCOUNT)],
};
const balance = await ledger.call(iface_1.ACCOUNT_BALANCE_CALL, account);
return (0, bignumber_js_1.default)(balance);
}
catch (error) {
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
throw new Error(`Error fetching balance for principal ${principalId}: ${errorMessage}`);
}
}
/**
* Fetches the transaction fee from the ledger.
* @returns Promise resolving to the transaction fee as a string.
* @throws Error if the fee could not be fetched.
*/
async getFee() {
try {
const ledger = this.getLedger();
const metadata = await ledger.call(iface_1.METADATA_CALL);
const feeEntry = metadata.find((entry) => entry[0] === iface_1.ICRC1_FEE_KEY && entry[1]?.Nat !== undefined);
if (!feeEntry) {
throw new Error(`${iface_1.ICRC1_FEE_KEY} metadata not found or invalid format`);
}
return (0, bignumber_js_1.default)(feeEntry[1].Nat);
}
catch (error) {
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
throw new Error(`Error fetching transaction fee: ${errorMessage}`);
}
}
}
exports.IcpAgent = IcpAgent;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNwQWdlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2ljcEFnZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLGtEQUErQztBQUMvQyw2QkFBd0Q7QUFDeEQsb0RBQTRCO0FBQzVCLG1DQUFxSDtBQUNySCxnRUFBcUM7QUFFckMsTUFBYSxRQUFRO0lBR25CLFlBQVksSUFBWTtRQUN0QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssV0FBVztRQUNqQixPQUFPLElBQUksZUFBUyxDQUFDO1lBQ25CLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLEtBQUs7WUFDTCxxQkFBcUIsRUFBRSxLQUFLO1NBQzdCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNLLFNBQVM7UUFDZixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDakMsTUFBTSxFQUFFLEdBQUcsSUFBQSxhQUFPLEVBQUMsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDM0MsT0FBTyxFQUFFLENBQUMscUJBQVMsQ0FBQyxjQUFjLENBQUMsMEJBQWtCLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLEtBQUssQ0FBQyxVQUFVLENBQUMsV0FBbUI7UUFDekMsSUFBSSxDQUFDO1lBQ0gsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7WUFDOUMsQ0FBQztZQUNELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNoQyxNQUFNLE9BQU8sR0FBRztnQkFDZCxLQUFLLEVBQUUscUJBQVMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDO2dCQUN0QyxVQUFVLEVBQUUsQ0FBQyxlQUFLLENBQUMsVUFBVSxDQUFDLDBCQUFrQixDQUFDLENBQUM7YUFDbkQsQ0FBQztZQUVGLE1BQU0sT0FBTyxHQUFHLE1BQU0sTUFBTSxDQUFDLElBQUksQ0FBQyw0QkFBb0IsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUNqRSxPQUFPLElBQUEsc0JBQVMsRUFBQyxPQUFPLENBQUMsQ0FBQztRQUM1QixDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE1BQU0sWUFBWSxHQUFHLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQztZQUM5RSxNQUFNLElBQUksS0FBSyxDQUFDLHdDQUF3QyxXQUFXLEtBQUssWUFBWSxFQUFFLENBQUMsQ0FBQztRQUMxRixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxLQUFLLENBQUMsTUFBTTtRQUNqQixJQUFJLENBQUM7WUFDSCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDaEMsTUFBTSxRQUFRLEdBQUcsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUFDLHFCQUFhLENBQUMsQ0FBQztZQUVsRCxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUM1QixDQUFDLEtBQUssRUFBc0MsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxxQkFBYSxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEtBQUssU0FBUyxDQUN6RyxDQUFDO1lBRUYsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNkLE1BQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxxQkFBYSx1Q0FBdUMsQ0FBQyxDQUFDO1lBQzNFLENBQUM7WUFFRCxPQUFPLElBQUEsc0JBQVMsRUFBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDcEMsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixNQUFNLFlBQVksR0FBRyxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUM7WUFDOUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQ0FBbUMsWUFBWSxFQUFFLENBQUMsQ0FBQztRQUNyRSxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBbkZELDRCQW1GQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFByaW5jaXBhbCB9IGZyb20gJ0BkZmluaXR5L3ByaW5jaXBhbCc7XG5pbXBvcnQgeyBIdHRwQWdlbnQsIHJlcGxpY2EsIEFnZW50Q2FuaXN0ZXIgfSBmcm9tICdpYzAnO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgQUNDT1VOVF9CQUxBTkNFX0NBTEwsIExFREdFUl9DQU5JU1RFUl9JRCwgSUNSQzFfRkVFX0tFWSwgTUVUQURBVEFfQ0FMTCwgREVGQVVMVF9TVUJBQ0NPVU5UIH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgQmlnTnVtYmVyIGZyb20gJ2JpZ251bWJlci5qcyc7XG5cbmV4cG9ydCBjbGFzcyBJY3BBZ2VudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgaG9zdDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKGhvc3Q6IHN0cmluZykge1xuICAgIHRoaXMuaG9zdCA9IGhvc3Q7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBIVFRQIGFnZW50IGZvciBjb21tdW5pY2F0aW5nIHdpdGggdGhlIEludGVybmV0IENvbXB1dGVyLlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiBIdHRwQWdlbnQuXG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZUFnZW50KCk6IEh0dHBBZ2VudCB7XG4gICAgcmV0dXJuIG5ldyBIdHRwQWdlbnQoe1xuICAgICAgaG9zdDogdGhpcy5ob3N0LFxuICAgICAgZmV0Y2gsXG4gICAgICB2ZXJpZnlRdWVyeVNpZ25hdHVyZXM6IGZhbHNlLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlcyBhbiBpbnN0YW5jZSBvZiB0aGUgbGVkZ2VyIGNhbmlzdGVyIGFnZW50LlxuICAgKlxuICAgKiBUaGlzIG1ldGhvZCBjcmVhdGVzIGEgbmV3IGFnZW50IHVzaW5nIGBjcmVhdGVBZ2VudCgpYCwgaW5pdGlhbGl6ZXMgYSByZXBsaWNhIGludGVyZmFjZVxuICAgKiB3aXRoIHRoZSBhZ2VudCAoY29uZmlndXJlZCBmb3IgbG9jYWwgdXNlKSwgYW5kIHJldHVybnMgYW4gYEFnZW50Q2FuaXN0ZXJgIGluc3RhbmNlXG4gICAqIGZvciB0aGUgbGVkZ2VyIGNhbmlzdGVyIGlkZW50aWZpZWQgYnkgYExFREdFUl9DQU5JU1RFUl9JRGAuXG4gICAqXG4gICAqIEByZXR1cm5zIHtBZ2VudENhbmlzdGVyfSBBbiBhZ2VudCBpbnRlcmZhY2UgZm9yIGludGVyYWN0aW5nIHdpdGggdGhlIGxlZGdlciBjYW5pc3Rlci5cbiAgICovXG4gIHByaXZhdGUgZ2V0TGVkZ2VyKCk6IEFnZW50Q2FuaXN0ZXIge1xuICAgIGNvbnN0IGFnZW50ID0gdGhpcy5jcmVhdGVBZ2VudCgpO1xuICAgIGNvbnN0IGljID0gcmVwbGljYShhZ2VudCwgeyBsb2NhbDogdHJ1ZSB9KTtcbiAgICByZXR1cm4gaWMoUHJpbmNpcGFsLmZyb21VaW50OEFycmF5KExFREdFUl9DQU5JU1RFUl9JRCkudG9UZXh0KCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoZXMgdGhlIGFjY291bnQgYmFsYW5jZSBmb3IgYSBnaXZlbiBwcmluY2lwYWwgSUQuXG4gICAqIEBwYXJhbSBwcmluY2lwYWxJZCAtIFRoZSBwcmluY2lwYWwgSUQgb2YgdGhlIGFjY291bnQuXG4gICAqIEByZXR1cm5zIFByb21pc2UgcmVzb2x2aW5nIHRvIHRoZSBhY2NvdW50IGJhbGFuY2UgYXMgYSBzdHJpbmcuXG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIGJhbGFuY2UgY291bGQgbm90IGJlIGZldGNoZWQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0QmFsYW5jZShwcmluY2lwYWxJZDogc3RyaW5nKTogUHJvbWlzZTxCaWdOdW1iZXI+IHtcbiAgICB0cnkge1xuICAgICAgaWYgKCFwcmluY2lwYWxJZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1ByaW5jaXBhbCBJRCBpcyByZXF1aXJlZCcpO1xuICAgICAgfVxuICAgICAgY29uc3QgbGVkZ2VyID0gdGhpcy5nZXRMZWRnZXIoKTtcbiAgICAgIGNvbnN0IGFjY291bnQgPSB7XG4gICAgICAgIG93bmVyOiBQcmluY2lwYWwuZnJvbVRleHQocHJpbmNpcGFsSWQpLFxuICAgICAgICBzdWJhY2NvdW50OiBbdXRpbHMuaGV4VG9CeXRlcyhERUZBVUxUX1NVQkFDQ09VTlQpXSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IGJhbGFuY2UgPSBhd2FpdCBsZWRnZXIuY2FsbChBQ0NPVU5UX0JBTEFOQ0VfQ0FMTCwgYWNjb3VudCk7XG4gICAgICByZXR1cm4gQmlnTnVtYmVyKGJhbGFuY2UpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6ICdVbmtub3duIGVycm9yJztcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRXJyb3IgZmV0Y2hpbmcgYmFsYW5jZSBmb3IgcHJpbmNpcGFsICR7cHJpbmNpcGFsSWR9OiAke2Vycm9yTWVzc2FnZX1gKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2hlcyB0aGUgdHJhbnNhY3Rpb24gZmVlIGZyb20gdGhlIGxlZGdlci5cbiAgICogQHJldHVybnMgUHJvbWlzZSByZXNvbHZpbmcgdG8gdGhlIHRyYW5zYWN0aW9uIGZlZSBhcyBhIHN0cmluZy5cbiAgICogQHRocm93cyBFcnJvciBpZiB0aGUgZmVlIGNvdWxkIG5vdCBiZSBmZXRjaGVkLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldEZlZSgpOiBQcm9taXNlPEJpZ051bWJlcj4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBsZWRnZXIgPSB0aGlzLmdldExlZGdlcigpO1xuICAgICAgY29uc3QgbWV0YWRhdGEgPSBhd2FpdCBsZWRnZXIuY2FsbChNRVRBREFUQV9DQUxMKTtcblxuICAgICAgY29uc3QgZmVlRW50cnkgPSBtZXRhZGF0YS5maW5kKFxuICAgICAgICAoZW50cnkpOiBlbnRyeSBpcyBbc3RyaW5nLCB7IE5hdDogc3RyaW5nIH1dID0+IGVudHJ5WzBdID09PSBJQ1JDMV9GRUVfS0VZICYmIGVudHJ5WzFdPy5OYXQgIT09IHVuZGVmaW5lZFxuICAgICAgKTtcblxuICAgICAgaWYgKCFmZWVFbnRyeSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7SUNSQzFfRkVFX0tFWX0gbWV0YWRhdGEgbm90IGZvdW5kIG9yIGludmFsaWQgZm9ybWF0YCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBCaWdOdW1iZXIoZmVlRW50cnlbMV0uTmF0KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiAnVW5rbm93biBlcnJvcic7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIGZldGNoaW5nIHRyYW5zYWN0aW9uIGZlZTogJHtlcnJvck1lc3NhZ2V9YCk7XG4gICAgfVxuICB9XG59XG4iXX0=Выполнить команду
Для локальной разработки. Не используйте в интернете!