@airgap/icp 0.13.11-beta.14 → 0.13.11-beta.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/package.json +3 -2
  2. package/v1/index.d.ts +3 -2
  3. package/v1/index.js +4 -1
  4. package/v1/index.js.map +1 -1
  5. package/v1/module/ICPModule.d.ts +1 -2
  6. package/v1/module/ICPModule.js +22 -10
  7. package/v1/module/ICPModule.js.map +1 -1
  8. package/v1/protocol/ICPImplementation.d.ts +12 -4
  9. package/v1/protocol/ICPImplementation.js +88 -56
  10. package/v1/protocol/ICPImplementation.js.map +1 -1
  11. package/v1/protocol/ICPProtocol.d.ts +4 -1
  12. package/v1/protocol/ICPProtocol.js +24 -17
  13. package/v1/protocol/ICPProtocol.js.map +1 -1
  14. package/v1/protocol/icrc/CkBTCProtocol.d.ts +13 -0
  15. package/v1/protocol/icrc/CkBTCProtocol.js +328 -0
  16. package/v1/protocol/icrc/CkBTCProtocol.js.map +1 -0
  17. package/v1/protocol/icrc/ICRC1Protocol.d.ts +92 -0
  18. package/v1/protocol/icrc/ICRC1Protocol.js +678 -0
  19. package/v1/protocol/icrc/ICRC1Protocol.js.map +1 -0
  20. package/v1/serializer/v3/serializer-companion.js +16 -0
  21. package/v1/serializer/v3/serializer-companion.js.map +1 -1
  22. package/v1/types/ckbtc/metadata.d.ts +4 -0
  23. package/v1/types/ckbtc/metadata.js +3 -0
  24. package/v1/types/ckbtc/metadata.js.map +1 -0
  25. package/v1/types/icrc/account.d.ts +4 -0
  26. package/v1/types/icrc/account.js +3 -0
  27. package/v1/types/icrc/account.js.map +1 -0
  28. package/v1/types/icrc/ledger.d.ts +15 -0
  29. package/v1/types/icrc/ledger.js +92 -0
  30. package/v1/types/icrc/ledger.js.map +1 -0
  31. package/v1/types/icrc/metadata.d.ts +6 -0
  32. package/v1/types/icrc/metadata.js +3 -0
  33. package/v1/types/icrc/metadata.js.map +1 -0
  34. package/v1/types/icrc/transfer.d.ts +9 -0
  35. package/v1/types/icrc/transfer.js +3 -0
  36. package/v1/types/icrc/transfer.js.map +1 -0
  37. package/v1/types/ledger.d.ts +0 -1
  38. package/v1/types/ledger.js +1 -2
  39. package/v1/types/ledger.js.map +1 -1
  40. package/v1/types/protocol.d.ts +30 -1
  41. package/v1/utils/convert.d.ts +3 -1
  42. package/v1/utils/convert.js +9 -1
  43. package/v1/utils/convert.js.map +1 -1
  44. package/v1/utils/icrc1.d.ts +20 -0
  45. package/v1/utils/icrc1.js +169 -0
  46. package/v1/utils/icrc1.js.map +1 -0
@@ -0,0 +1,328 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ var __assign = (this && this.__assign) || function () {
18
+ __assign = Object.assign || function(t) {
19
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
20
+ s = arguments[i];
21
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
22
+ t[p] = s[p];
23
+ }
24
+ return t;
25
+ };
26
+ return __assign.apply(this, arguments);
27
+ };
28
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
29
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
30
+ return new (P || (P = Promise))(function (resolve, reject) {
31
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
32
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
33
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
34
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
35
+ });
36
+ };
37
+ var __generator = (this && this.__generator) || function (thisArg, body) {
38
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
39
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
40
+ function verb(n) { return function (v) { return step([n, v]); }; }
41
+ function step(op) {
42
+ if (f) throw new TypeError("Generator is already executing.");
43
+ while (_) try {
44
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
45
+ if (y = 0, t) op = [op[0] & 2, t.value];
46
+ switch (op[0]) {
47
+ case 0: case 1: t = op; break;
48
+ case 4: _.label++; return { value: op[1], done: false };
49
+ case 5: _.label++; y = op[1]; op = [0]; continue;
50
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
51
+ default:
52
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
53
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
54
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
55
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
56
+ if (t[2]) _.ops.pop();
57
+ _.trys.pop(); continue;
58
+ }
59
+ op = body.call(thisArg, _);
60
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
61
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
62
+ }
63
+ };
64
+ Object.defineProperty(exports, "__esModule", { value: true });
65
+ exports.createCkBTCOnlineProtocolOptions = exports.createCkBTCOfflineProtocolOptions = exports.CKBTC_MAINNET_PROTOCOL_NETWORK = exports.createCkBTCOnlineProtocol = exports.createCkBTCOfflineProtocol = void 0;
66
+ // tslint:disable: max-classes-per-file
67
+ var coinlib_core_1 = require("@airgap/coinlib-core");
68
+ var errors_1 = require("@airgap/coinlib-core/errors");
69
+ var module_kit_1 = require("@airgap/module-kit");
70
+ var auth_1 = require("../../utils/auth");
71
+ var icrc1_1 = require("../../utils/icrc1");
72
+ var ICRC1Protocol_1 = require("./ICRC1Protocol");
73
+ // Implementation
74
+ var CKBTC_METADATA = {
75
+ identifier: coinlib_core_1.MainProtocolSymbols.ICP_CKBTC,
76
+ name: 'Chain Key Bitcoin',
77
+ units: {
78
+ ckBTC: {
79
+ symbol: { value: 'ckBTC', market: 'btc' },
80
+ decimals: 8
81
+ }
82
+ },
83
+ mainUnit: 'ckBTC',
84
+ feeDefaults: {
85
+ low: (0, module_kit_1.newAmount)(10, 'blockchain'),
86
+ medium: (0, module_kit_1.newAmount)(10, 'blockchain'),
87
+ high: (0, module_kit_1.newAmount)(10, 'blockchain')
88
+ }
89
+ };
90
+ var CkBTCOfflineProtocolImpl = /** @class */ (function (_super) {
91
+ __extends(CkBTCOfflineProtocolImpl, _super);
92
+ function CkBTCOfflineProtocolImpl(options) {
93
+ var completeOptions = createCkBTCOfflineProtocolOptions(options.ledgerCanisterId);
94
+ return _super.call(this, __assign(__assign({}, completeOptions), CKBTC_METADATA)) || this;
95
+ }
96
+ return CkBTCOfflineProtocolImpl;
97
+ }(ICRC1Protocol_1.ICRC1OfflineProtocolImpl));
98
+ var CkBTCOnlineProtocolImpl = /** @class */ (function (_super) {
99
+ __extends(CkBTCOnlineProtocolImpl, _super);
100
+ function CkBTCOnlineProtocolImpl(options) {
101
+ var completeOptions = createCkBTCOnlineProtocolOptions(options.network);
102
+ return _super.call(this, __assign(__assign({}, completeOptions), CKBTC_METADATA)) || this;
103
+ }
104
+ CkBTCOnlineProtocolImpl.prototype.getTransactionsForPublicKey = function (publicKey, limit, cursor) {
105
+ return __awaiter(this, void 0, void 0, function () {
106
+ var address;
107
+ return __generator(this, function (_a) {
108
+ switch (_a.label) {
109
+ case 0: return [4 /*yield*/, this.getAddressFromPublicKey(publicKey)];
110
+ case 1:
111
+ address = _a.sent();
112
+ return [2 /*return*/, this.getTransactionsForAddress(address, limit, cursor)];
113
+ }
114
+ });
115
+ });
116
+ };
117
+ CkBTCOnlineProtocolImpl.prototype.getTransactionsForAddress = function (address, limit, cursor) {
118
+ return __awaiter(this, void 0, void 0, function () {
119
+ var actor, account, defaultFee, getTransactionsResult, okResult, transactions, last, airGapTransactions, next, hasNext;
120
+ var _this = this;
121
+ return __generator(this, function (_a) {
122
+ switch (_a.label) {
123
+ case 0:
124
+ actor = this.createIndexerActor();
125
+ account = (0, icrc1_1.getICRC1AccountFromAddress)(address);
126
+ return [4 /*yield*/, this.fee()];
127
+ case 1:
128
+ defaultFee = _a.sent();
129
+ return [4 /*yield*/, actor.get_account_transactions({
130
+ account: (0, icrc1_1.encodeICRC1Account)(account),
131
+ start: (cursor === null || cursor === void 0 ? void 0 : cursor.next) ? [BigInt(cursor.next)] : [],
132
+ max_results: BigInt(limit + 1)
133
+ })];
134
+ case 2:
135
+ getTransactionsResult = _a.sent();
136
+ if (getTransactionsResult.Err) {
137
+ throw new errors_1.OperationFailedError(coinlib_core_1.Domain.ICP, "ICRC1 get transactions failed (".concat(getTransactionsResult.Err.message, ")"));
138
+ }
139
+ okResult = getTransactionsResult.Ok;
140
+ transactions = okResult.transactions;
141
+ last = okResult.oldest_tx_id && okResult.oldest_tx_id.length > 0 ? okResult.oldest_tx_id[0].toString() : undefined;
142
+ airGapTransactions = transactions
143
+ .map(function (transactionWithId) {
144
+ var transaction = transactionWithId.transaction;
145
+ var timestamp = Number(transaction.timestamp) / 1000000000; // ns to s
146
+ if (transaction.kind === 'transfer' && transaction.transfer[0]) {
147
+ var transfer = transaction.transfer[0];
148
+ var from = (0, icrc1_1.getICRC1AddressFromPrincipal)(transfer.from.owner, transfer.from.subaccount[0]);
149
+ var to = (0, icrc1_1.getICRC1AddressFromPrincipal)(transfer.to.owner, transfer.to.subaccount[0]);
150
+ return {
151
+ from: [from],
152
+ to: [to],
153
+ isInbound: to === address,
154
+ amount: (0, module_kit_1.newAmount)(transfer.amount.toString(), 'blockchain'),
155
+ fee: transfer.fee && transfer.fee[0]
156
+ ? (0, module_kit_1.newAmount)(transfer.fee[0].toString(), 'blockchain')
157
+ : (0, module_kit_1.newAmount)(defaultFee, 'blockchain'),
158
+ network: _this.options.network,
159
+ status: {
160
+ type: 'applied'
161
+ },
162
+ timestamp: timestamp,
163
+ arbitraryData: transfer.memo && transfer.memo[0] ? Buffer.from(transfer.memo[0]).toString('hex') : undefined
164
+ };
165
+ }
166
+ else if (transaction.kind === 'burn' && transaction.burn[0]) {
167
+ var burn = transaction.burn[0];
168
+ return {
169
+ from: [(0, icrc1_1.getICRC1AddressFromPrincipal)(burn.from.owner, burn.from.subaccount[0])],
170
+ to: ['Burn'],
171
+ isInbound: false,
172
+ amount: (0, module_kit_1.newAmount)(burn.amount.toString(), 'blockchain'),
173
+ fee: (0, module_kit_1.newAmount)(0, 'blockchain'),
174
+ type: 'burn',
175
+ network: _this.options.network,
176
+ status: {
177
+ type: 'applied'
178
+ },
179
+ timestamp: timestamp,
180
+ arbitraryData: burn.memo && burn.memo[0] ? Buffer.from(burn.memo[0]).toString('hex') : undefined
181
+ };
182
+ }
183
+ else if (transaction.kind === 'mint' && transaction.mint[0]) {
184
+ var mint = transaction.mint[0];
185
+ return {
186
+ from: ['Mint'],
187
+ to: [(0, icrc1_1.getICRC1AddressFromPrincipal)(mint.to.owner, mint.to.subaccount[0])],
188
+ isInbound: false,
189
+ amount: (0, module_kit_1.newAmount)(mint.amount.toString(), 'blockchain'),
190
+ fee: (0, module_kit_1.newAmount)(0, 'blockchain'),
191
+ type: 'mint',
192
+ network: _this.options.network,
193
+ status: {
194
+ type: 'applied'
195
+ },
196
+ timestamp: timestamp,
197
+ arbitraryData: mint.memo && mint.memo[0] ? Buffer.from(mint.memo[0]).toString('hex') : undefined
198
+ };
199
+ }
200
+ return undefined;
201
+ })
202
+ .filter(function (tx) { return tx !== undefined; });
203
+ next = transactions.length > 0 ? transactions.slice(-1)[0].id.toString() : '';
204
+ hasNext = airGapTransactions.length > limit || next !== last;
205
+ return [2 /*return*/, {
206
+ transactions: airGapTransactions.length <= limit ? airGapTransactions : airGapTransactions.slice(0, -1),
207
+ cursor: {
208
+ hasNext: hasNext,
209
+ next: next
210
+ }
211
+ }];
212
+ }
213
+ });
214
+ });
215
+ };
216
+ CkBTCOnlineProtocolImpl.prototype.metadata = function () {
217
+ return __awaiter(this, void 0, void 0, function () {
218
+ var baseMetadata, symbol, name, decimals, fee;
219
+ return __generator(this, function (_a) {
220
+ switch (_a.label) {
221
+ case 0: return [4 /*yield*/, this.baseMetadata()];
222
+ case 1:
223
+ baseMetadata = _a.sent();
224
+ symbol = baseMetadata.symbol, name = baseMetadata.name, decimals = baseMetadata.decimals, fee = baseMetadata.fee;
225
+ return [2 /*return*/, {
226
+ symbol: symbol,
227
+ name: name,
228
+ decimals: decimals,
229
+ fee: fee,
230
+ logo: baseMetadata['icrc1:logo'].Text
231
+ }];
232
+ }
233
+ });
234
+ });
235
+ };
236
+ // Custom
237
+ CkBTCOnlineProtocolImpl.prototype.createIndexerActor = function (identity) {
238
+ if (identity === void 0) { identity = new auth_1.AnonymousIdentity(); }
239
+ return this.createActor(this.options.network.indexerCanisterId, function (_a) {
240
+ var IDL = _a.IDL;
241
+ var TxId = IDL.Nat;
242
+ var Account = IDL.Record({
243
+ owner: IDL.Principal,
244
+ subaccount: IDL.Opt(IDL.Vec(IDL.Nat8))
245
+ });
246
+ var GetAccountTransactionsArgs = IDL.Record({
247
+ max_results: IDL.Nat,
248
+ start: IDL.Opt(TxId),
249
+ account: Account
250
+ });
251
+ var Transaction = IDL.Record({
252
+ burn: IDL.Opt(IDL.Record({
253
+ from: Account,
254
+ memo: IDL.Opt(IDL.Vec(IDL.Nat8)),
255
+ created_at_time: IDL.Opt(IDL.Nat64),
256
+ amount: IDL.Nat
257
+ })),
258
+ kind: IDL.Text,
259
+ mint: IDL.Opt(IDL.Record({
260
+ to: Account,
261
+ memo: IDL.Opt(IDL.Vec(IDL.Nat8)),
262
+ created_at_time: IDL.Opt(IDL.Nat64),
263
+ amount: IDL.Nat
264
+ })),
265
+ timestamp: IDL.Nat64,
266
+ transfer: IDL.Opt(IDL.Record({
267
+ to: Account,
268
+ fee: IDL.Opt(IDL.Nat),
269
+ from: Account,
270
+ memo: IDL.Opt(IDL.Vec(IDL.Nat8)),
271
+ created_at_time: IDL.Opt(IDL.Nat64),
272
+ amount: IDL.Nat
273
+ }))
274
+ });
275
+ var TransactionWithId = IDL.Record({
276
+ id: TxId,
277
+ transaction: Transaction
278
+ });
279
+ var GetTransactions = IDL.Record({
280
+ transactions: IDL.Vec(TransactionWithId),
281
+ oldest_tx_id: IDL.Opt(TxId)
282
+ });
283
+ var GetTransactionsErr = IDL.Record({ message: IDL.Text });
284
+ var GetTransactionsResult = IDL.Variant({
285
+ Ok: GetTransactions,
286
+ Err: GetTransactionsErr
287
+ });
288
+ return IDL.Service({
289
+ get_account_transactions: IDL.Func([GetAccountTransactionsArgs], [GetTransactionsResult], [])
290
+ });
291
+ }, identity);
292
+ };
293
+ return CkBTCOnlineProtocolImpl;
294
+ }(ICRC1Protocol_1.ICRC1OnlineProtocolImpl));
295
+ // Factory
296
+ function createCkBTCOfflineProtocol(options) {
297
+ if (options === void 0) { options = {}; }
298
+ return new CkBTCOfflineProtocolImpl(options);
299
+ }
300
+ exports.createCkBTCOfflineProtocol = createCkBTCOfflineProtocol;
301
+ function createCkBTCOnlineProtocol(options) {
302
+ if (options === void 0) { options = {}; }
303
+ return new CkBTCOnlineProtocolImpl(options);
304
+ }
305
+ exports.createCkBTCOnlineProtocol = createCkBTCOnlineProtocol;
306
+ exports.CKBTC_MAINNET_PROTOCOL_NETWORK = {
307
+ name: 'Mainnet',
308
+ type: 'mainnet',
309
+ rpcUrl: 'https://boundary.ic0.app/',
310
+ ledgerCanisterId: 'mxzaz-hqaaa-aaaar-qaada-cai',
311
+ indexerCanisterId: 'n5wcd-faaaa-aaaar-qaaea-cai',
312
+ explorerUrl: 'https://ledger-api.internetcomputer.org'
313
+ };
314
+ var DEFAULT_CKBTC_PROTOCOL_NETWORK = exports.CKBTC_MAINNET_PROTOCOL_NETWORK;
315
+ function createCkBTCOfflineProtocolOptions(ledgerCanisterId) {
316
+ return {
317
+ ledgerCanisterId: ledgerCanisterId !== null && ledgerCanisterId !== void 0 ? ledgerCanisterId : DEFAULT_CKBTC_PROTOCOL_NETWORK.ledgerCanisterId
318
+ };
319
+ }
320
+ exports.createCkBTCOfflineProtocolOptions = createCkBTCOfflineProtocolOptions;
321
+ function createCkBTCOnlineProtocolOptions(network) {
322
+ if (network === void 0) { network = {}; }
323
+ return {
324
+ network: __assign(__assign({}, DEFAULT_CKBTC_PROTOCOL_NETWORK), network)
325
+ };
326
+ }
327
+ exports.createCkBTCOnlineProtocolOptions = createCkBTCOnlineProtocolOptions;
328
+ //# sourceMappingURL=CkBTCProtocol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CkBTCProtocol.js","sourceRoot":"","sources":["../../../../src/v1/protocol/icrc/CkBTCProtocol.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,92 @@
1
+ import { Address, AirGapOfflineProtocol, AirGapOnlineProtocol, AirGapTransaction, AirGapTransactionsWithCursor, Amount, Balance, CryptoDerivative, KeyPair, ProtocolAccountMetadata, ProtocolMetadata, PublicKey, SecretKey, TransactionConfiguration, TransactionDetails } from '@airgap/module-kit';
2
+ import { ICPCryptoConfiguration } from '../../types/crypto';
3
+ import { ICRC1Account } from '../../types/icrc/account';
4
+ import { ICRC1Metadata } from '../../types/icrc/metadata';
5
+ import { ICRC1TransferArgs } from '../../types/icrc/transfer';
6
+ import { ICRC1OfflineProtocolOptions, ICRC1OnlineProtocolOptions, ICRC1ProtocolNetwork } from '../../types/protocol';
7
+ import { ICPSignedTransaction, ICPTransactionCursor, ICPUnsignedTransaction } from '../../types/transaction';
8
+ import { ActorSubclass } from '../../utils/actor';
9
+ import { Identity } from '../../utils/auth';
10
+ import * as IDL from '../../utils/idl';
11
+ import { ICPProtocol } from '../ICPProtocol';
12
+ export interface ICRC1OfflineProtocol<_Units extends string = string> extends AirGapOfflineProtocol<{
13
+ AddressResult: Address;
14
+ CryptoConfiguration: ICPCryptoConfiguration;
15
+ Units: _Units;
16
+ SignedTransaction: ICPSignedTransaction;
17
+ UnsignedTransaction: ICPUnsignedTransaction;
18
+ }> {
19
+ }
20
+ export interface ICRC1OnlineProtocol<_Units extends string = string, _ICRC1Metadata extends ICRC1Metadata = ICRC1Metadata, _ProtocolNetwork extends ICRC1ProtocolNetwork = ICRC1ProtocolNetwork> extends AirGapOnlineProtocol<{
21
+ AddressResult: Address;
22
+ ProtocolNetwork: _ProtocolNetwork;
23
+ Units: _Units;
24
+ FeeEstimation: Amount<_Units>;
25
+ SignedTransaction: ICPSignedTransaction;
26
+ UnsignedTransaction: ICPUnsignedTransaction;
27
+ TransactionCursor: ICPTransactionCursor;
28
+ }, 'FetchDataForAddress'> {
29
+ name(): Promise<string>;
30
+ symbol(): Promise<string>;
31
+ decimals(): Promise<number>;
32
+ fee(): Promise<string>;
33
+ metadata(): Promise<_ICRC1Metadata>;
34
+ totalSupply(): Promise<string>;
35
+ mintingAccount(): Promise<ICRC1Account | undefined>;
36
+ balanceOf(account: ICRC1Account): Promise<string>;
37
+ transfer(privateKey: string, args: ICRC1TransferArgs): Promise<string>;
38
+ }
39
+ export declare const ICRC1_ACCOUNT_METADATA: ProtocolAccountMetadata;
40
+ export declare abstract class ICRC1OfflineProtocolImpl<_Units extends string = string> implements ICRC1OfflineProtocol<_Units> {
41
+ private readonly options;
42
+ private readonly commonImpl;
43
+ protected readonly icp: ICPProtocol;
44
+ protected constructor(options: ICRC1OfflineProtocolOptions<_Units>);
45
+ private readonly metadata;
46
+ getMetadata(): Promise<ProtocolMetadata<_Units>>;
47
+ getAddressFromPublicKey(publicKey: PublicKey): Promise<string>;
48
+ getDetailsFromTransaction(transaction: ICPSignedTransaction | ICPUnsignedTransaction, publicKey: PublicKey): Promise<AirGapTransaction<_Units>[]>;
49
+ getCryptoConfiguration(): Promise<ICPCryptoConfiguration>;
50
+ getKeyPairFromDerivative(derivative: CryptoDerivative): Promise<KeyPair>;
51
+ signTransactionWithSecretKey(transaction: ICPUnsignedTransaction, secretKey: SecretKey): Promise<ICPSignedTransaction>;
52
+ }
53
+ export declare abstract class ICRC1OnlineProtocolImpl<_Units extends string = string, _ICRC1Metadata extends ICRC1Metadata = ICRC1Metadata, _ProtocolNetwork extends ICRC1ProtocolNetwork = ICRC1ProtocolNetwork> implements ICRC1OnlineProtocol<_Units, _ICRC1Metadata, _ProtocolNetwork> {
54
+ protected readonly options: ICRC1OnlineProtocolOptions<_ProtocolNetwork, _Units>;
55
+ private readonly commonImpl;
56
+ protected readonly icp: ICPProtocol;
57
+ protected constructor(options: ICRC1OnlineProtocolOptions<_ProtocolNetwork, _Units>);
58
+ private _metadata;
59
+ getMetadata(): Promise<ProtocolMetadata<_Units>>;
60
+ private getPartialMetadata;
61
+ getAddressFromPublicKey(publicKey: PublicKey): Promise<string>;
62
+ getDetailsFromTransaction(transaction: ICPSignedTransaction | ICPUnsignedTransaction, publicKey: PublicKey): Promise<AirGapTransaction<_Units>[]>;
63
+ getNetwork(): Promise<_ProtocolNetwork>;
64
+ abstract getTransactionsForPublicKey(publicKey: PublicKey, limit: number, cursor?: ICPTransactionCursor): Promise<AirGapTransactionsWithCursor<ICPTransactionCursor, _Units>>;
65
+ abstract getTransactionsForAddress(address: string, limit: number, cursor?: ICPTransactionCursor): Promise<AirGapTransactionsWithCursor<ICPTransactionCursor, _Units>>;
66
+ getBalanceOfPublicKey(publicKey: PublicKey): Promise<Balance<_Units>>;
67
+ getBalanceOfAddress(address: string): Promise<Balance<_Units>>;
68
+ private getBalanceOfAccount;
69
+ getTransactionMaxAmountWithPublicKey(publicKey: PublicKey, to: string[], configuration?: TransactionConfiguration<_Units>): Promise<Amount<_Units>>;
70
+ getTransactionFeeWithPublicKey(publicKey: PublicKey, details: TransactionDetails<_Units>[]): Promise<Amount<_Units>>;
71
+ prepareTransactionWithPublicKey(publicKey: PublicKey, details: TransactionDetails<_Units>[], configuration?: TransactionConfiguration<_Units>): Promise<ICPUnsignedTransaction>;
72
+ broadcastTransaction(transaction: ICPSignedTransaction): Promise<string>;
73
+ private _name;
74
+ name(): Promise<string>;
75
+ private _symbol;
76
+ symbol(): Promise<string>;
77
+ private _decimals;
78
+ decimals(): Promise<number>;
79
+ private _fee;
80
+ fee(): Promise<string>;
81
+ abstract metadata(): Promise<_ICRC1Metadata>;
82
+ private _baseMetadata;
83
+ protected baseMetadata(): Promise<ICRC1Metadata & Record<string, any>>;
84
+ private _totalSupply;
85
+ totalSupply(): Promise<string>;
86
+ private _mintingAccount;
87
+ mintingAccount(): Promise<ICRC1Account | undefined>;
88
+ balanceOf(account: ICRC1Account): Promise<string>;
89
+ transfer(privateKey: string, args: ICRC1TransferArgs): Promise<string>;
90
+ protected createLedgerActor(idlFactory?: IDL.InterfaceFactory, identity?: Identity): ActorSubclass;
91
+ protected createActor(canisterId: string, idlFactory?: IDL.InterfaceFactory, identity?: Identity): ActorSubclass;
92
+ }