@bitgo-beta/abstract-eth 1.2.3-alpha.89 → 1.2.3-alpha.90
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.
- package/dist/src/abstractEthLikeCoin.d.ts +3 -2
- package/dist/src/abstractEthLikeCoin.d.ts.map +1 -1
- package/dist/src/abstractEthLikeCoin.js +9 -9
- package/dist/src/abstractEthLikeNewCoins.d.ts +93 -0
- package/dist/src/abstractEthLikeNewCoins.d.ts.map +1 -0
- package/dist/src/abstractEthLikeNewCoins.js +147 -0
- package/dist/src/ethLikeToken.d.ts +7 -2
- package/dist/src/ethLikeToken.d.ts.map +1 -1
- package/dist/src/ethLikeToken.js +8 -5
- package/dist/src/index.d.ts +2 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +3 -3
- package/dist/src/lib/contractCall.d.ts +8 -0
- package/dist/src/lib/contractCall.d.ts.map +1 -0
- package/dist/src/lib/contractCall.js +17 -0
- package/dist/src/lib/iface.d.ts +130 -0
- package/dist/src/lib/iface.d.ts.map +1 -0
- package/dist/src/lib/iface.js +8 -0
- package/dist/src/lib/index.d.ts +15 -0
- package/dist/src/lib/index.d.ts.map +1 -0
- package/dist/src/lib/index.js +42 -0
- package/dist/src/lib/keyPair.d.ts +26 -0
- package/dist/src/lib/keyPair.d.ts.map +1 -0
- package/dist/src/lib/keyPair.js +66 -0
- package/dist/src/lib/transaction.d.ts +64 -0
- package/dist/src/lib/transaction.d.ts.map +1 -0
- package/dist/src/lib/transaction.js +137 -0
- package/dist/src/lib/transactionBuilder.d.ts +231 -0
- package/dist/src/lib/transactionBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder.js +674 -0
- package/dist/src/lib/transferBuilder.d.ts +65 -0
- package/dist/src/lib/transferBuilder.d.ts.map +1 -0
- package/dist/src/lib/transferBuilder.js +221 -0
- package/dist/src/lib/transferBuilders/baseNFTTransferBuilder.d.ts +47 -0
- package/dist/src/lib/transferBuilders/baseNFTTransferBuilder.d.ts.map +1 -0
- package/dist/src/lib/transferBuilders/baseNFTTransferBuilder.js +113 -0
- package/dist/src/lib/transferBuilders/index.d.ts +4 -0
- package/dist/src/lib/transferBuilders/index.d.ts.map +1 -0
- package/dist/src/lib/transferBuilders/index.js +16 -0
- package/dist/src/lib/transferBuilders/transferBuilderERC1155.d.ts +14 -0
- package/dist/src/lib/transferBuilders/transferBuilderERC1155.d.ts.map +1 -0
- package/dist/src/lib/transferBuilders/transferBuilderERC1155.js +83 -0
- package/dist/src/lib/transferBuilders/transferBuilderERC721.d.ts +13 -0
- package/dist/src/lib/transferBuilders/transferBuilderERC721.d.ts.map +1 -0
- package/dist/src/lib/transferBuilders/transferBuilderERC721.js +68 -0
- package/dist/src/lib/types.d.ts +39 -0
- package/dist/src/lib/types.d.ts.map +1 -0
- package/dist/src/lib/types.js +137 -0
- package/dist/src/lib/utils.d.ts +228 -0
- package/dist/src/lib/utils.d.ts.map +1 -0
- package/dist/src/lib/utils.js +577 -0
- package/dist/src/lib/walletUtil.d.ts +26 -0
- package/dist/src/lib/walletUtil.d.ts.map +1 -0
- package/dist/src/lib/walletUtil.js +29 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +13 -7
- package/dist/src/abstractEthLikeMPCCoin.d.ts +0 -12
- package/dist/src/abstractEthLikeMPCCoin.d.ts.map +0 -1
- package/dist/src/abstractEthLikeMPCCoin.js +0 -16
- package/dist/src/ethLikeMPCToken.d.ts +0 -12
- package/dist/src/ethLikeMPCToken.d.ts.map +0 -1
- package/dist/src/ethLikeMPCToken.js +0 -16
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { BaseNFTTransferBuilder } from './baseNFTTransferBuilder';
|
|
2
|
+
export declare class ERC721TransferBuilder extends BaseNFTTransferBuilder {
|
|
3
|
+
private _tokenId;
|
|
4
|
+
private _bytes;
|
|
5
|
+
constructor(serializedData?: string);
|
|
6
|
+
tokenContractAddress(address: string): ERC721TransferBuilder;
|
|
7
|
+
tokenId(token: string): ERC721TransferBuilder;
|
|
8
|
+
bytes(bytesInNumber: number): ERC721TransferBuilder;
|
|
9
|
+
signAndBuild(): string;
|
|
10
|
+
private hasMandatoryFields;
|
|
11
|
+
private decodeTransferData;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=transferBuilderERC721.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transferBuilderERC721.d.ts","sourceRoot":"","sources":["../../../../src/lib/transferBuilders/transferBuilderERC721.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAGlE,qBAAa,qBAAsB,SAAQ,sBAAsB;IAC/D,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,MAAM,CAAS;gBAEX,cAAc,CAAC,EAAE,MAAM;IAQnC,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,qBAAqB;IAQ5D,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,qBAAqB;IAK7C,KAAK,CAAC,aAAa,EAAE,MAAM,GAAG,qBAAqB;IAKnD,YAAY,IAAI,MAAM;IAuBtB,OAAO,CAAC,kBAAkB;IAU1B,OAAO,CAAC,kBAAkB;CAa3B"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ERC721TransferBuilder = void 0;
|
|
4
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
5
|
+
const utils_1 = require("ethers/lib/utils");
|
|
6
|
+
const contractCall_1 = require("../contractCall");
|
|
7
|
+
const utils_2 = require("../utils");
|
|
8
|
+
const baseNFTTransferBuilder_1 = require("./baseNFTTransferBuilder");
|
|
9
|
+
const walletUtil_1 = require("../walletUtil");
|
|
10
|
+
class ERC721TransferBuilder extends baseNFTTransferBuilder_1.BaseNFTTransferBuilder {
|
|
11
|
+
constructor(serializedData) {
|
|
12
|
+
super(serializedData);
|
|
13
|
+
this.bytes(0);
|
|
14
|
+
if (serializedData) {
|
|
15
|
+
this.decodeTransferData(serializedData);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
tokenContractAddress(address) {
|
|
19
|
+
if (utils_2.isValidEthAddress(address)) {
|
|
20
|
+
this._tokenContractAddress = address;
|
|
21
|
+
return this;
|
|
22
|
+
}
|
|
23
|
+
throw new sdk_core_1.InvalidParameterValueError('Invalid address');
|
|
24
|
+
}
|
|
25
|
+
tokenId(token) {
|
|
26
|
+
this._tokenId = token;
|
|
27
|
+
return this;
|
|
28
|
+
}
|
|
29
|
+
bytes(bytesInNumber) {
|
|
30
|
+
this._bytes = utils_1.hexZeroPad(utils_1.hexlify(bytesInNumber), 32);
|
|
31
|
+
return this;
|
|
32
|
+
}
|
|
33
|
+
signAndBuild() {
|
|
34
|
+
if (this.hasMandatoryFields()) {
|
|
35
|
+
const types = ['address', 'address', 'uint256', 'bytes'];
|
|
36
|
+
const values = [this._fromAddress, this._toAddress, this._tokenId, this._bytes];
|
|
37
|
+
const contractCall = new contractCall_1.ContractCall(walletUtil_1.ERC721SafeTransferTypeMethodId, types, values);
|
|
38
|
+
this._data = contractCall.serialize();
|
|
39
|
+
return utils_2.sendMultiSigData(this._tokenContractAddress, // to
|
|
40
|
+
'0', // dummy amount value
|
|
41
|
+
this._data, this._expirationTime, this._sequenceId, this.getSignature());
|
|
42
|
+
}
|
|
43
|
+
throw new sdk_core_1.BuildTransactionError(`Missing transfer mandatory fields.
|
|
44
|
+
Destination (to) address, Source (from) address, sequenceID, the token contract address and tokenID are mandatory`);
|
|
45
|
+
}
|
|
46
|
+
hasMandatoryFields() {
|
|
47
|
+
return (this._tokenId !== undefined &&
|
|
48
|
+
this._toAddress !== undefined &&
|
|
49
|
+
this._fromAddress !== undefined &&
|
|
50
|
+
this._tokenContractAddress !== undefined &&
|
|
51
|
+
this._sequenceId !== undefined);
|
|
52
|
+
}
|
|
53
|
+
decodeTransferData(data) {
|
|
54
|
+
const transferData = utils_2.decodeERC721TransferData(data);
|
|
55
|
+
this._toAddress = transferData.to;
|
|
56
|
+
this._fromAddress = transferData.from;
|
|
57
|
+
this._expirationTime = transferData.expireTime;
|
|
58
|
+
this._sequenceId = transferData.sequenceId;
|
|
59
|
+
this._signature = transferData.signature;
|
|
60
|
+
this._tokenContractAddress = transferData.tokenContractAddress;
|
|
61
|
+
this._tokenId = transferData.tokenId;
|
|
62
|
+
if (transferData.data) {
|
|
63
|
+
this._data = transferData.data;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
exports.ERC721TransferBuilder = ERC721TransferBuilder;
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJCdWlsZGVyRVJDNzIxLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi90cmFuc2ZlckJ1aWxkZXJzL3RyYW5zZmVyQnVpbGRlckVSQzcyMS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtREFBeUY7QUFDekYsNENBQXVEO0FBRXZELGtEQUErQztBQUMvQyxvQ0FBeUY7QUFDekYscUVBQWtFO0FBQ2xFLDhDQUErRDtBQUUvRCxNQUFhLHFCQUFzQixTQUFRLCtDQUFzQjtJQUkvRCxZQUFZLGNBQXVCO1FBQ2pDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN0QixJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2QsSUFBSSxjQUFjLEVBQUU7WUFDbEIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxDQUFDO1NBQ3pDO0lBQ0gsQ0FBQztJQUVELG9CQUFvQixDQUFDLE9BQWU7UUFDbEMsSUFBSSx5QkFBaUIsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUM5QixJQUFJLENBQUMscUJBQXFCLEdBQUcsT0FBTyxDQUFDO1lBQ3JDLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxNQUFNLElBQUkscUNBQTBCLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsT0FBTyxDQUFDLEtBQWE7UUFDbkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDdEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsS0FBSyxDQUFDLGFBQXFCO1FBQ3pCLElBQUksQ0FBQyxNQUFNLEdBQUcsa0JBQVUsQ0FBQyxlQUFPLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDckQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFLEVBQUU7WUFDN0IsTUFBTSxLQUFLLEdBQUcsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUN6RCxNQUFNLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNoRixNQUFNLFlBQVksR0FBRyxJQUFJLDJCQUFZLENBQUMsMkNBQThCLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ3JGLElBQUksQ0FBQyxLQUFLLEdBQUcsWUFBWSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBRXRDLE9BQU8sd0JBQWdCLENBQ3JCLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxLQUFLO1lBQ2pDLEdBQUcsRUFBRSxxQkFBcUI7WUFDMUIsSUFBSSxDQUFDLEtBQUssRUFDVixJQUFJLENBQUMsZUFBZSxFQUNwQixJQUFJLENBQUMsV0FBVyxFQUNoQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQ3BCLENBQUM7U0FDSDtRQUVELE1BQU0sSUFBSSxnQ0FBcUIsQ0FDN0I7eUhBQ21ILENBQ3BILENBQUM7SUFDSixDQUFDO0lBRU8sa0JBQWtCO1FBQ3hCLE9BQU8sQ0FDTCxJQUFJLENBQUMsUUFBUSxLQUFLLFNBQVM7WUFDM0IsSUFBSSxDQUFDLFVBQVUsS0FBSyxTQUFTO1lBQzdCLElBQUksQ0FBQyxZQUFZLEtBQUssU0FBUztZQUMvQixJQUFJLENBQUMscUJBQXFCLEtBQUssU0FBUztZQUN4QyxJQUFJLENBQUMsV0FBVyxLQUFLLFNBQVMsQ0FDL0IsQ0FBQztJQUNKLENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxJQUFZO1FBQ3JDLE1BQU0sWUFBWSxHQUFHLGdDQUF3QixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxVQUFVLEdBQUcsWUFBWSxDQUFDLEVBQUUsQ0FBQztRQUNsQyxJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUM7UUFDdEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxZQUFZLENBQUMsVUFBVSxDQUFDO1FBQy9DLElBQUksQ0FBQyxXQUFXLEdBQUcsWUFBWSxDQUFDLFVBQVUsQ0FBQztRQUMzQyxJQUFJLENBQUMsVUFBVSxHQUFHLFlBQVksQ0FBQyxTQUFTLENBQUM7UUFDekMsSUFBSSxDQUFDLHFCQUFxQixHQUFHLFlBQVksQ0FBQyxvQkFBb0IsQ0FBQztRQUMvRCxJQUFJLENBQUMsUUFBUSxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUM7UUFDckMsSUFBSSxZQUFZLENBQUMsSUFBSSxFQUFFO1lBQ3JCLElBQUksQ0FBQyxLQUFLLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQztTQUNoQztJQUNILENBQUM7Q0FDRjtBQTVFRCxzREE0RUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IsIEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgaGV4bGlmeSwgaGV4WmVyb1BhZCB9IGZyb20gJ2V0aGVycy9saWIvdXRpbHMnO1xuXG5pbXBvcnQgeyBDb250cmFjdENhbGwgfSBmcm9tICcuLi9jb250cmFjdENhbGwnO1xuaW1wb3J0IHsgZGVjb2RlRVJDNzIxVHJhbnNmZXJEYXRhLCBpc1ZhbGlkRXRoQWRkcmVzcywgc2VuZE11bHRpU2lnRGF0YSB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IEJhc2VORlRUcmFuc2ZlckJ1aWxkZXIgfSBmcm9tICcuL2Jhc2VORlRUcmFuc2ZlckJ1aWxkZXInO1xuaW1wb3J0IHsgRVJDNzIxU2FmZVRyYW5zZmVyVHlwZU1ldGhvZElkIH0gZnJvbSAnLi4vd2FsbGV0VXRpbCc7XG5cbmV4cG9ydCBjbGFzcyBFUkM3MjFUcmFuc2ZlckJ1aWxkZXIgZXh0ZW5kcyBCYXNlTkZUVHJhbnNmZXJCdWlsZGVyIHtcbiAgcHJpdmF0ZSBfdG9rZW5JZDogc3RyaW5nO1xuICBwcml2YXRlIF9ieXRlczogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHNlcmlhbGl6ZWREYXRhPzogc3RyaW5nKSB7XG4gICAgc3VwZXIoc2VyaWFsaXplZERhdGEpO1xuICAgIHRoaXMuYnl0ZXMoMCk7XG4gICAgaWYgKHNlcmlhbGl6ZWREYXRhKSB7XG4gICAgICB0aGlzLmRlY29kZVRyYW5zZmVyRGF0YShzZXJpYWxpemVkRGF0YSk7XG4gICAgfVxuICB9XG5cbiAgdG9rZW5Db250cmFjdEFkZHJlc3MoYWRkcmVzczogc3RyaW5nKTogRVJDNzIxVHJhbnNmZXJCdWlsZGVyIHtcbiAgICBpZiAoaXNWYWxpZEV0aEFkZHJlc3MoYWRkcmVzcykpIHtcbiAgICAgIHRoaXMuX3Rva2VuQ29udHJhY3RBZGRyZXNzID0gYWRkcmVzcztcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IoJ0ludmFsaWQgYWRkcmVzcycpO1xuICB9XG5cbiAgdG9rZW5JZCh0b2tlbjogc3RyaW5nKTogRVJDNzIxVHJhbnNmZXJCdWlsZGVyIHtcbiAgICB0aGlzLl90b2tlbklkID0gdG9rZW47XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBieXRlcyhieXRlc0luTnVtYmVyOiBudW1iZXIpOiBFUkM3MjFUcmFuc2ZlckJ1aWxkZXIge1xuICAgIHRoaXMuX2J5dGVzID0gaGV4WmVyb1BhZChoZXhsaWZ5KGJ5dGVzSW5OdW1iZXIpLCAzMik7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzaWduQW5kQnVpbGQoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5oYXNNYW5kYXRvcnlGaWVsZHMoKSkge1xuICAgICAgY29uc3QgdHlwZXMgPSBbJ2FkZHJlc3MnLCAnYWRkcmVzcycsICd1aW50MjU2JywgJ2J5dGVzJ107XG4gICAgICBjb25zdCB2YWx1ZXMgPSBbdGhpcy5fZnJvbUFkZHJlc3MsIHRoaXMuX3RvQWRkcmVzcywgdGhpcy5fdG9rZW5JZCwgdGhpcy5fYnl0ZXNdO1xuICAgICAgY29uc3QgY29udHJhY3RDYWxsID0gbmV3IENvbnRyYWN0Q2FsbChFUkM3MjFTYWZlVHJhbnNmZXJUeXBlTWV0aG9kSWQsIHR5cGVzLCB2YWx1ZXMpO1xuICAgICAgdGhpcy5fZGF0YSA9IGNvbnRyYWN0Q2FsbC5zZXJpYWxpemUoKTtcblxuICAgICAgcmV0dXJuIHNlbmRNdWx0aVNpZ0RhdGEoXG4gICAgICAgIHRoaXMuX3Rva2VuQ29udHJhY3RBZGRyZXNzLCAvLyB0b1xuICAgICAgICAnMCcsIC8vIGR1bW15IGFtb3VudCB2YWx1ZVxuICAgICAgICB0aGlzLl9kYXRhLFxuICAgICAgICB0aGlzLl9leHBpcmF0aW9uVGltZSxcbiAgICAgICAgdGhpcy5fc2VxdWVuY2VJZCxcbiAgICAgICAgdGhpcy5nZXRTaWduYXR1cmUoKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKFxuICAgICAgYE1pc3NpbmcgdHJhbnNmZXIgbWFuZGF0b3J5IGZpZWxkcy4gXG4gICAgICAgRGVzdGluYXRpb24gKHRvKSBhZGRyZXNzLCBTb3VyY2UgKGZyb20pIGFkZHJlc3MsIHNlcXVlbmNlSUQsIHRoZSB0b2tlbiBjb250cmFjdCBhZGRyZXNzIGFuZCB0b2tlbklEIGFyZSBtYW5kYXRvcnlgXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFzTWFuZGF0b3J5RmllbGRzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLl90b2tlbklkICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIHRoaXMuX3RvQWRkcmVzcyAhPT0gdW5kZWZpbmVkICYmXG4gICAgICB0aGlzLl9mcm9tQWRkcmVzcyAhPT0gdW5kZWZpbmVkICYmXG4gICAgICB0aGlzLl90b2tlbkNvbnRyYWN0QWRkcmVzcyAhPT0gdW5kZWZpbmVkICYmXG4gICAgICB0aGlzLl9zZXF1ZW5jZUlkICE9PSB1bmRlZmluZWRcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBkZWNvZGVUcmFuc2ZlckRhdGEoZGF0YTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgdHJhbnNmZXJEYXRhID0gZGVjb2RlRVJDNzIxVHJhbnNmZXJEYXRhKGRhdGEpO1xuICAgIHRoaXMuX3RvQWRkcmVzcyA9IHRyYW5zZmVyRGF0YS50bztcbiAgICB0aGlzLl9mcm9tQWRkcmVzcyA9IHRyYW5zZmVyRGF0YS5mcm9tO1xuICAgIHRoaXMuX2V4cGlyYXRpb25UaW1lID0gdHJhbnNmZXJEYXRhLmV4cGlyZVRpbWU7XG4gICAgdGhpcy5fc2VxdWVuY2VJZCA9IHRyYW5zZmVyRGF0YS5zZXF1ZW5jZUlkO1xuICAgIHRoaXMuX3NpZ25hdHVyZSA9IHRyYW5zZmVyRGF0YS5zaWduYXR1cmU7XG4gICAgdGhpcy5fdG9rZW5Db250cmFjdEFkZHJlc3MgPSB0cmFuc2ZlckRhdGEudG9rZW5Db250cmFjdEFkZHJlc3M7XG4gICAgdGhpcy5fdG9rZW5JZCA9IHRyYW5zZmVyRGF0YS50b2tlbklkO1xuICAgIGlmICh0cmFuc2ZlckRhdGEuZGF0YSkge1xuICAgICAgdGhpcy5fZGF0YSA9IHRyYW5zZmVyRGF0YS5kYXRhO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { TypedTransaction } from '@ethereumjs/tx';
|
|
2
|
+
import EthereumCommon from '@ethereumjs/common';
|
|
3
|
+
import { EthLikeTransactionData, TxData } from './iface';
|
|
4
|
+
import { KeyPair } from './keyPair';
|
|
5
|
+
/**
|
|
6
|
+
* An Ethereum transaction with helpers for serialization and deserialization.
|
|
7
|
+
*/
|
|
8
|
+
export declare class EthTransactionData implements EthLikeTransactionData {
|
|
9
|
+
private tx;
|
|
10
|
+
protected args?: {
|
|
11
|
+
deployedAddress?: string;
|
|
12
|
+
chainId?: string;
|
|
13
|
+
};
|
|
14
|
+
constructor(tx: TypedTransaction, args?: {
|
|
15
|
+
deployedAddress?: string;
|
|
16
|
+
chainId?: string;
|
|
17
|
+
});
|
|
18
|
+
/**
|
|
19
|
+
* Build an thereum transaction from its JSON representation
|
|
20
|
+
*
|
|
21
|
+
* @param {TxData} tx The JSON representation of the transaction
|
|
22
|
+
* @param {EthereumCommon} common Class to access chain and hardfork parameters
|
|
23
|
+
* @returns {EthTransactionData} a new ethereum transaction object
|
|
24
|
+
*/
|
|
25
|
+
static fromJson(tx: TxData, common: EthereumCommon): EthTransactionData;
|
|
26
|
+
/**
|
|
27
|
+
* Build an ethereum transaction from its string serialization
|
|
28
|
+
*
|
|
29
|
+
* @param tx The string serialization of the ethereum transaction
|
|
30
|
+
* @param common
|
|
31
|
+
*/
|
|
32
|
+
static fromSerialized(tx: string, common: EthereumCommon): EthTransactionData;
|
|
33
|
+
sign(keyPair: KeyPair): void;
|
|
34
|
+
/** @inheritdoc */
|
|
35
|
+
toJson(): TxData;
|
|
36
|
+
/** @inheritdoc */
|
|
37
|
+
toSerialized(): string;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/types.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,gBAAgB,EAIjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,cAAc,MAAM,oBAAoB,CAAC;AAEhD,OAAO,EAA6B,sBAAsB,EAAoC,MAAM,EAAE,MAAM,SAAS,CAAC;AACtH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC;;GAEG;AACH,qBAAa,kBAAmB,YAAW,sBAAsB;IAC/D,OAAO,CAAC,EAAE,CAAmB;IAC7B,SAAS,CAAC,IAAI,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;gBAEpD,EAAE,EAAE,gBAAgB,EAAE,IAAI,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;IAKvF;;;;;;OAMG;WACW,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,kBAAkB;IAuC9E;;;;;OAKG;WACW,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,kBAAkB;IAMpF,IAAI,CAAC,OAAO,EAAE,OAAO;IAKrB,kBAAkB;IAClB,MAAM,IAAI,MAAM;IA2DhB,kBAAkB;IAClB,YAAY,IAAI,MAAM;CAGvB"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.EthTransactionData = void 0;
|
|
7
|
+
const assert_1 = __importDefault(require("assert"));
|
|
8
|
+
const bignumber_js_1 = __importDefault(require("bignumber.js"));
|
|
9
|
+
const tx_1 = require("@ethereumjs/tx");
|
|
10
|
+
const ethereumjs_util_1 = require("ethereumjs-util");
|
|
11
|
+
const iface_1 = require("./iface");
|
|
12
|
+
// https://github.com/ethereumjs/ethereumjs-monorepo/blob/master/packages/tx/src/transactionFactory.ts#L31
|
|
13
|
+
const LEGACY_TX_TYPE = 0;
|
|
14
|
+
const EIP1559_TX_TYPE = 2;
|
|
15
|
+
/**
|
|
16
|
+
* An Ethereum transaction with helpers for serialization and deserialization.
|
|
17
|
+
*/
|
|
18
|
+
class EthTransactionData {
|
|
19
|
+
constructor(tx, args) {
|
|
20
|
+
this.tx = tx;
|
|
21
|
+
this.args = args;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Build an thereum transaction from its JSON representation
|
|
25
|
+
*
|
|
26
|
+
* @param {TxData} tx The JSON representation of the transaction
|
|
27
|
+
* @param {EthereumCommon} common Class to access chain and hardfork parameters
|
|
28
|
+
* @returns {EthTransactionData} a new ethereum transaction object
|
|
29
|
+
*/
|
|
30
|
+
static fromJson(tx, common) {
|
|
31
|
+
const nonce = ethereumjs_util_1.addHexPrefix(new bignumber_js_1.default(tx.nonce).toString(16));
|
|
32
|
+
const value = ethereumjs_util_1.addHexPrefix(new bignumber_js_1.default(tx.value).toString(16));
|
|
33
|
+
const gasLimit = ethereumjs_util_1.addHexPrefix(new bignumber_js_1.default(tx.gasLimit).toString(16));
|
|
34
|
+
const chainId = tx.chainId ? ethereumjs_util_1.addHexPrefix(new bignumber_js_1.default(tx.chainId).toString(16)) : undefined;
|
|
35
|
+
const gasPrice = isLegacyTx(tx) ? ethereumjs_util_1.addHexPrefix(new bignumber_js_1.default(tx.gasPrice).toString(16)) : undefined;
|
|
36
|
+
const maxFeePerGas = isEIP1559Txn(tx) ? ethereumjs_util_1.addHexPrefix(new bignumber_js_1.default(tx.maxFeePerGas).toString(16)) : undefined;
|
|
37
|
+
const maxPriorityFeePerGas = isEIP1559Txn(tx)
|
|
38
|
+
? ethereumjs_util_1.addHexPrefix(new bignumber_js_1.default(tx.maxPriorityFeePerGas).toString(16))
|
|
39
|
+
: undefined;
|
|
40
|
+
return new EthTransactionData(tx_1.TransactionFactory.fromTxData({
|
|
41
|
+
type: isLegacyTx(tx) ? LEGACY_TX_TYPE : EIP1559_TX_TYPE,
|
|
42
|
+
chainId,
|
|
43
|
+
nonce,
|
|
44
|
+
to: tx.to,
|
|
45
|
+
gasPrice,
|
|
46
|
+
gasLimit,
|
|
47
|
+
maxFeePerGas,
|
|
48
|
+
maxPriorityFeePerGas,
|
|
49
|
+
value,
|
|
50
|
+
data: tx.data,
|
|
51
|
+
v: tx.v,
|
|
52
|
+
r: tx.r,
|
|
53
|
+
s: tx.s,
|
|
54
|
+
}, { common: common }), {
|
|
55
|
+
deployedAddress: tx.deployedAddress,
|
|
56
|
+
chainId: ethereumjs_util_1.addHexPrefix(new bignumber_js_1.default(Number(tx.chainId)).toString(16)),
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Build an ethereum transaction from its string serialization
|
|
61
|
+
*
|
|
62
|
+
* @param tx The string serialization of the ethereum transaction
|
|
63
|
+
* @param common
|
|
64
|
+
*/
|
|
65
|
+
static fromSerialized(tx, common) {
|
|
66
|
+
return new EthTransactionData(tx_1.TransactionFactory.fromSerializedData(ethereumjs_util_1.toBuffer(ethereumjs_util_1.addHexPrefix(tx)), { common: common }));
|
|
67
|
+
}
|
|
68
|
+
sign(keyPair) {
|
|
69
|
+
const privateKey = Buffer.from(keyPair.getKeys().prv, 'hex');
|
|
70
|
+
this.tx = this.tx.sign(privateKey);
|
|
71
|
+
}
|
|
72
|
+
/** @inheritdoc */
|
|
73
|
+
toJson() {
|
|
74
|
+
const result = {
|
|
75
|
+
nonce: ethereumjs_util_1.bufferToInt(ethereumjs_util_1.toUnsigned(this.tx.nonce)),
|
|
76
|
+
gasLimit: new bignumber_js_1.default(ethereumjs_util_1.bufferToHex(ethereumjs_util_1.toUnsigned(this.tx.gasLimit)), 16).toString(10),
|
|
77
|
+
value: this.tx.value.toString(10),
|
|
78
|
+
data: ethereumjs_util_1.bufferToHex(this.tx.data),
|
|
79
|
+
};
|
|
80
|
+
if (this.tx.isSigned()) {
|
|
81
|
+
result.id = ethereumjs_util_1.addHexPrefix(ethereumjs_util_1.bufferToHex(this.tx.hash()));
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
result.id = ethereumjs_util_1.addHexPrefix(ethereumjs_util_1.bufferToHex(this.tx.getMessageToSign()));
|
|
85
|
+
}
|
|
86
|
+
if (this.tx.to) {
|
|
87
|
+
result.to = ethereumjs_util_1.bufferToHex(this.tx.to.toBuffer());
|
|
88
|
+
}
|
|
89
|
+
if (this.tx.verifySignature()) {
|
|
90
|
+
result.from = ethereumjs_util_1.bufferToHex(this.tx.getSenderAddress().toBuffer());
|
|
91
|
+
assert_1.default(this.tx.r != undefined);
|
|
92
|
+
result.r = ethereumjs_util_1.bufferToHex(ethereumjs_util_1.toUnsigned(this.tx.r));
|
|
93
|
+
assert_1.default(this.tx.s != undefined);
|
|
94
|
+
result.s = ethereumjs_util_1.bufferToHex(ethereumjs_util_1.toUnsigned(this.tx.s));
|
|
95
|
+
}
|
|
96
|
+
if (this.tx.v) {
|
|
97
|
+
result.v = ethereumjs_util_1.bufferToHex(ethereumjs_util_1.toUnsigned(this.tx.v));
|
|
98
|
+
}
|
|
99
|
+
result.chainId = ethereumjs_util_1.addHexPrefix(this.tx.common.chainIdBN().toString(16));
|
|
100
|
+
if (this.args && this.args.deployedAddress) {
|
|
101
|
+
result.deployedAddress = this.args.deployedAddress;
|
|
102
|
+
}
|
|
103
|
+
if (this.tx instanceof tx_1.Transaction) {
|
|
104
|
+
const gasPrice = new bignumber_js_1.default(ethereumjs_util_1.bufferToHex(ethereumjs_util_1.toUnsigned(this.tx.gasPrice)), 16).toString(10);
|
|
105
|
+
return {
|
|
106
|
+
...result,
|
|
107
|
+
_type: iface_1.ETHTransactionType.LEGACY,
|
|
108
|
+
gasPrice,
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
else if (this.tx instanceof tx_1.FeeMarketEIP1559Transaction) {
|
|
112
|
+
const maxFeePerGas = new bignumber_js_1.default(ethereumjs_util_1.bufferToHex(ethereumjs_util_1.toUnsigned(this.tx.maxFeePerGas)), 16).toString(10);
|
|
113
|
+
const maxPriorityFeePerGas = new bignumber_js_1.default(ethereumjs_util_1.bufferToHex(ethereumjs_util_1.toUnsigned(this.tx.maxPriorityFeePerGas)), 16).toString(10);
|
|
114
|
+
return {
|
|
115
|
+
...result,
|
|
116
|
+
_type: iface_1.ETHTransactionType.EIP1559,
|
|
117
|
+
maxFeePerGas,
|
|
118
|
+
maxPriorityFeePerGas,
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
throw new Error(`Unsupported tx type: ${tx_1.AccessListEIP2930Transaction.name}`);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
/** @inheritdoc */
|
|
126
|
+
toSerialized() {
|
|
127
|
+
return ethereumjs_util_1.addHexPrefix(this.tx.serialize().toString('hex'));
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
exports.EthTransactionData = EthTransactionData;
|
|
131
|
+
function isLegacyTx(tx) {
|
|
132
|
+
return tx._type === iface_1.ETHTransactionType.LEGACY;
|
|
133
|
+
}
|
|
134
|
+
function isEIP1559Txn(tx) {
|
|
135
|
+
return tx._type === iface_1.ETHTransactionType.EIP1559;
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG9EQUE0QjtBQUM1QixnRUFBcUM7QUFDckMsdUNBTXdCO0FBRXhCLHFEQUErRjtBQUMvRixtQ0FBc0g7QUFHdEgsMEdBQTBHO0FBQzFHLE1BQU0sY0FBYyxHQUFHLENBQUMsQ0FBQztBQUN6QixNQUFNLGVBQWUsR0FBRyxDQUFDLENBQUM7QUFFMUI7O0dBRUc7QUFDSCxNQUFhLGtCQUFrQjtJQUk3QixZQUFZLEVBQW9CLEVBQUUsSUFBcUQ7UUFDckYsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFDYixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFVLEVBQUUsTUFBc0I7UUFDdkQsTUFBTSxLQUFLLEdBQUcsOEJBQVksQ0FBQyxJQUFJLHNCQUFTLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2pFLE1BQU0sS0FBSyxHQUFHLDhCQUFZLENBQUMsSUFBSSxzQkFBUyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNqRSxNQUFNLFFBQVEsR0FBRyw4QkFBWSxDQUFDLElBQUksc0JBQVMsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDdkUsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsOEJBQVksQ0FBQyxJQUFJLHNCQUFTLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FB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RSxDQUNILENBQUM7WUFFRixPQUFPO2dCQUNMLEdBQUcsTUFBTTtnQkFDVCxLQUFLLEVBQUUsMEJBQWtCLENBQUMsT0FBTztnQkFDakMsWUFBWTtnQkFDWixvQkFBb0I7YUFDckIsQ0FBQztTQUNIO2FBQU07WUFDTCxNQUFNLElBQUksS0FBSyxDQUFDLHdCQUF3QixpQ0FBNEIsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1NBQzlFO0lBQ0gsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixZQUFZO1FBQ1YsT0FBTyw4QkFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDM0QsQ0FBQztDQUNGO0FBeElELGdEQXdJQztBQUVELFNBQVMsVUFBVSxDQUFDLEVBQVU7SUFDNUIsT0FBTyxFQUFFLENBQUMsS0FBSyxLQUFLLDBCQUFrQixDQUFDLE1BQU0sQ0FBQztBQUNoRCxDQUFDO0FBRUQsU0FBUyxZQUFZLENBQUMsRUFBVTtJQUM5QixPQUFPLEVBQUUsQ0FBQyxLQUFLLEtBQUssMEJBQWtCLENBQUMsT0FBTyxDQUFDO0FBQ2pELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgQmlnTnVtYmVyIGZyb20gJ2JpZ251bWJlci5qcyc7XG5pbXBvcnQge1xuICBUcmFuc2FjdGlvbkZhY3RvcnksXG4gIFR5cGVkVHJhbnNhY3Rpb24sXG4gIFRyYW5zYWN0aW9uIGFzIExlZ2FjeVRyYW5zYWN0aW9uLFxuICBGZWVNYXJrZXRFSVAxNTU5VHJhbnNhY3Rpb24sXG4gIEFjY2Vzc0xpc3RFSVAyOTMwVHJhbnNhY3Rpb24sXG59IGZyb20gJ0BldGhlcmV1bWpzL3R4JztcbmltcG9ydCBFdGhlcmV1bUNvbW1vbiBmcm9tICdAZXRoZXJldW1qcy9jb21tb24nO1xuaW1wb3J0IHsgYnVmZmVyVG9IZXgsIGJ1ZmZlclRvSW50LCB0b0J1ZmZlciwgdG9VbnNpZ25lZCwgYWRkSGV4UHJlZml4IH0gZnJvbSAnZXRoZXJldW1qcy11dGlsJztcbmltcG9ydCB7IEJhc2VUeERhdGEsIEVJUDE1NTlUeERhdGEsIEV0aExpa2VUcmFuc2FjdGlvbkRhdGEsIExlZ2FjeVR4RGF0YSwgRVRIVHJhbnNhY3Rpb25UeXBlLCBUeERhdGEgfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IEtleVBhaXIgfSBmcm9tICcuL2tleVBhaXInO1xuXG4vLyBodHRwczovL2dpdGh1Yi5jb20vZXRoZXJldW1qcy9ldGhlcmV1bWpzLW1vbm9yZXBvL2Jsb2IvbWFzdGVyL3BhY2thZ2VzL3R4L3NyYy90cmFuc2FjdGlvbkZhY3RvcnkudHMjTDMxXG5jb25zdCBMRUdBQ1lfVFhfVFlQRSA9IDA7XG5jb25zdCBFSVAxNTU5X1RYX1RZUEUgPSAyO1xuXG4vKipcbiAqIEFuIEV0aGVyZXVtIHRyYW5zYWN0aW9uIHdpdGggaGVscGVycyBmb3Igc2VyaWFsaXphdGlvbiBhbmQgZGVzZXJpYWxpemF0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgRXRoVHJhbnNhY3Rpb25EYXRhIGltcGxlbWVudHMgRXRoTGlrZVRyYW5zYWN0aW9uRGF0YSB7XG4gIHByaXZhdGUgdHg6IFR5cGVkVHJhbnNhY3Rpb247XG4gIHByb3RlY3RlZCBhcmdzPzogeyBkZXBsb3llZEFkZHJlc3M/OiBzdHJpbmc7IGNoYWluSWQ/OiBzdHJpbmcgfTtcblxuICBjb25zdHJ1Y3Rvcih0eDogVHlwZWRUcmFuc2FjdGlvbiwgYXJncz86IHsgZGVwbG95ZWRBZGRyZXNzPzogc3RyaW5nOyBjaGFpbklkPzogc3RyaW5nIH0pIHtcbiAgICB0aGlzLnR4ID0gdHg7XG4gICAgdGhpcy5hcmdzID0gYXJncztcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBhbiB0aGVyZXVtIHRyYW5zYWN0aW9uIGZyb20gaXRzIEpTT04gcmVwcmVzZW50YXRpb25cbiAgICpcbiAgICogQHBhcmFtIHtUeERhdGF9IHR4IFRoZSBKU09OIHJlcHJlc2VudGF0aW9uIG9mIHRoZSB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0ge0V0aGVyZXVtQ29tbW9ufSBjb21tb24gQ2xhc3MgdG8gYWNjZXNzIGNoYWluIGFuZCBoYXJkZm9yayBwYXJhbWV0ZXJzXG4gICAqIEByZXR1cm5zIHtFdGhUcmFuc2FjdGlvbkRhdGF9IGEgbmV3IGV0aGVyZXVtIHRyYW5zYWN0aW9uIG9iamVjdFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tSnNvbih0eDogVHhEYXRhLCBjb21tb246IEV0aGVyZXVtQ29tbW9uKTogRXRoVHJhbnNhY3Rpb25EYXRhIHtcbiAgICBjb25zdCBub25jZSA9IGFkZEhleFByZWZpeChuZXcgQmlnTnVtYmVyKHR4Lm5vbmNlKS50b1N0cmluZygxNikpO1xuICAgIGNvbnN0IHZhbHVlID0gYWRkSGV4UHJlZml4KG5ldyBCaWdOdW1iZXIodHgudmFsdWUpLnRvU3RyaW5nKDE2KSk7XG4gICAgY29uc3QgZ2FzTGltaXQgPSBhZGRIZXhQcmVmaXgobmV3IEJpZ051bWJlcih0eC5nYXNMaW1pdCkudG9TdHJpbmcoMTYpKTtcbiAgICBjb25zdCBjaGFpbklkID0gdHguY2hhaW5JZCA/IGFkZEhleFByZWZpeChuZXcgQmlnTnVtYmVyKHR4LmNoYWluSWQpLnRvU3RyaW5nKDE2KSkgOiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBnYXNQcmljZSA9IGlzTGVnYWN5VHgodHgpID8gYWRkSGV4UHJlZml4KG5ldyBCaWdOdW1iZXIodHguZ2FzUHJpY2UpLnRvU3RyaW5nKDE2KSkgOiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBtYXhGZWVQZXJHYXMgPSBpc0VJUDE1NTlUeG4odHgpID8gYWRkSGV4UHJlZml4KG5ldyBCaWdOdW1iZXIodHgubWF4RmVlUGVyR2FzKS50b1N0cmluZygxNikpIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IG1heFByaW9yaXR5RmVlUGVyR2FzID0gaXNFSVAxNTU5VHhuKHR4KVxuICAgICAgPyBhZGRIZXhQcmVmaXgobmV3IEJpZ051bWJlcih0eC5tYXhQcmlvcml0eUZlZVBlckdhcykudG9TdHJpbmcoMTYpKVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICByZXR1cm4gbmV3IEV0aFRyYW5zYWN0aW9uRGF0YShcbiAgICAgIFRyYW5zYWN0aW9uRmFjdG9yeS5mcm9tVHhEYXRhKFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogaXNMZWdhY3lUeCh0eCkgPyBMRUdBQ1lfVFhfVFlQRSA6IEVJUDE1NTlfVFhfVFlQRSxcbiAgICAgICAgICBjaGFpbklkLFxuICAgICAgICAgIG5vbmNlLFxuICAgICAgICAgIHRvOiB0eC50byxcbiAgICAgICAgICBnYXNQcmljZSxcbiAgICAgICAgICBnYXNMaW1pdCxcbiAgICAgICAgICBtYXhGZWVQZXJHYXMsXG4gICAgICAgICAgbWF4UHJpb3JpdHlGZWVQZXJHYXMsXG4gICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgZGF0YTogdHguZGF0YSxcbiAgICAgICAgICB2OiB0eC52LFxuICAgICAgICAgIHI6IHR4LnIsXG4gICAgICAgICAgczogdHgucyxcbiAgICAgICAgfSxcbiAgICAgICAgeyBjb21tb246IGNvbW1vbiB9XG4gICAgICApLFxuICAgICAge1xuICAgICAgICBkZXBsb3llZEFkZHJlc3M6IHR4LmRlcGxveWVkQWRkcmVzcyxcbiAgICAgICAgY2hhaW5JZDogYWRkSGV4UHJlZml4KG5ldyBCaWdOdW1iZXIoTnVtYmVyKHR4LmNoYWluSWQpKS50b1N0cmluZygxNikpLFxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgYW4gZXRoZXJldW0gdHJhbnNhY3Rpb24gZnJvbSBpdHMgc3RyaW5nIHNlcmlhbGl6YXRpb25cbiAgICpcbiAgICogQHBhcmFtIHR4IFRoZSBzdHJpbmcgc2VyaWFsaXphdGlvbiBvZiB0aGUgZXRoZXJldW0gdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIGNvbW1vblxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tU2VyaWFsaXplZCh0eDogc3RyaW5nLCBjb21tb246IEV0aGVyZXVtQ29tbW9uKTogRXRoVHJhbnNhY3Rpb25EYXRhIHtcbiAgICByZXR1cm4gbmV3IEV0aFRyYW5zYWN0aW9uRGF0YShcbiAgICAgIFRyYW5zYWN0aW9uRmFjdG9yeS5mcm9tU2VyaWFsaXplZERhdGEodG9CdWZmZXIoYWRkSGV4UHJlZml4KHR4KSksIHsgY29tbW9uOiBjb21tb24gfSlcbiAgICApO1xuICB9XG5cbiAgc2lnbihrZXlQYWlyOiBLZXlQYWlyKSB7XG4gICAgY29uc3QgcHJpdmF0ZUtleSA9IEJ1ZmZlci5mcm9tKGtleVBhaXIuZ2V0S2V5cygpLnBydiBhcyBzdHJpbmcsICdoZXgnKTtcbiAgICB0aGlzLnR4ID0gdGhpcy50eC5zaWduKHByaXZhdGVLZXkpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHRvSnNvbigpOiBUeERhdGEge1xuICAgIGNvbnN0IHJlc3VsdDogQmFzZVR4RGF0YSA9IHtcbiAgICAgIG5vbmNlOiBidWZmZXJUb0ludCh0b1Vuc2lnbmVkKHRoaXMudHgubm9uY2UpKSxcbiAgICAgIGdhc0xpbWl0OiBuZXcgQmlnTnVtYmVyKGJ1ZmZlclRvSGV4KHRvVW5zaWduZWQodGhpcy50eC5nYXNMaW1pdCkpLCAxNikudG9TdHJpbmcoMTApLFxuICAgICAgdmFsdWU6IHRoaXMudHgudmFsdWUudG9TdHJpbmcoMTApLFxuICAgICAgZGF0YTogYnVmZmVyVG9IZXgodGhpcy50eC5kYXRhKSxcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMudHguaXNTaWduZWQoKSkge1xuICAgICAgcmVzdWx0LmlkID0gYWRkSGV4UHJlZml4KGJ1ZmZlclRvSGV4KHRoaXMudHguaGFzaCgpKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdC5pZCA9IGFkZEhleFByZWZpeChidWZmZXJUb0hleCh0aGlzLnR4LmdldE1lc3NhZ2VUb1NpZ24oKSkpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnR4LnRvKSB7XG4gICAgICByZXN1bHQudG8gPSBidWZmZXJUb0hleCh0aGlzLnR4LnRvLnRvQnVmZmVyKCkpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnR4LnZlcmlmeVNpZ25hdHVyZSgpKSB7XG4gICAgICByZXN1bHQuZnJvbSA9IGJ1ZmZlclRvSGV4KHRoaXMudHguZ2V0U2VuZGVyQWRkcmVzcygpLnRvQnVmZmVyKCkpO1xuICAgICAgYXNzZXJ0KHRoaXMudHguciAhPSB1bmRlZmluZWQpO1xuICAgICAgcmVzdWx0LnIgPSBidWZmZXJUb0hleCh0b1Vuc2lnbmVkKHRoaXMudHgucikpO1xuICAgICAgYXNzZXJ0KHRoaXMudHgucyAhPSB1bmRlZmluZWQpO1xuICAgICAgcmVzdWx0LnMgPSBidWZmZXJUb0hleCh0b1Vuc2lnbmVkKHRoaXMudHgucykpO1xuICAgIH1cbiAgICBpZiAodGhpcy50eC52KSB7XG4gICAgICByZXN1bHQudiA9IGJ1ZmZlclRvSGV4KHRvVW5zaWduZWQodGhpcy50eC52KSk7XG4gICAgfVxuICAgIHJlc3VsdC5jaGFpbklkID0gYWRkSGV4UHJlZml4KHRoaXMudHguY29tbW9uLmNoYWluSWRCTigpLnRvU3RyaW5nKDE2KSk7XG5cbiAgICBpZiAodGhpcy5hcmdzICYmIHRoaXMuYXJncy5kZXBsb3llZEFkZHJlc3MpIHtcbiAgICAgIHJlc3VsdC5kZXBsb3llZEFkZHJlc3MgPSB0aGlzLmFyZ3MuZGVwbG95ZWRBZGRyZXNzO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnR4IGluc3RhbmNlb2YgTGVnYWN5VHJhbnNhY3Rpb24pIHtcbiAgICAgIGNvbnN0IGdhc1ByaWNlID0gbmV3IEJpZ051bWJlcihidWZmZXJUb0hleCh0b1Vuc2lnbmVkKHRoaXMudHguZ2FzUHJpY2UpKSwgMTYpLnRvU3RyaW5nKDEwKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ucmVzdWx0LFxuICAgICAgICBfdHlwZTogRVRIVHJhbnNhY3Rpb25UeXBlLkxFR0FDWSxcbiAgICAgICAgZ2FzUHJpY2UsXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAodGhpcy50eCBpbnN0YW5jZW9mIEZlZU1hcmtldEVJUDE1NTlUcmFuc2FjdGlvbikge1xuICAgICAgY29uc3QgbWF4RmVlUGVyR2FzID0gbmV3IEJpZ051bWJlcihidWZmZXJUb0hleCh0b1Vuc2lnbmVkKHRoaXMudHgubWF4RmVlUGVyR2FzKSksIDE2KS50b1N0cmluZygxMCk7XG4gICAgICBjb25zdCBtYXhQcmlvcml0eUZlZVBlckdhcyA9IG5ldyBCaWdOdW1iZXIoYnVmZmVyVG9IZXgodG9VbnNpZ25lZCh0aGlzLnR4Lm1heFByaW9yaXR5RmVlUGVyR2FzKSksIDE2KS50b1N0cmluZyhcbiAgICAgICAgMTBcbiAgICAgICk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnJlc3VsdCxcbiAgICAgICAgX3R5cGU6IEVUSFRyYW5zYWN0aW9uVHlwZS5FSVAxNTU5LFxuICAgICAgICBtYXhGZWVQZXJHYXMsXG4gICAgICAgIG1heFByaW9yaXR5RmVlUGVyR2FzLFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCB0eCB0eXBlOiAke0FjY2Vzc0xpc3RFSVAyOTMwVHJhbnNhY3Rpb24ubmFtZX1gKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdG9TZXJpYWxpemVkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGFkZEhleFByZWZpeCh0aGlzLnR4LnNlcmlhbGl6ZSgpLnRvU3RyaW5nKCdoZXgnKSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNMZWdhY3lUeCh0eDogVHhEYXRhKTogdHggaXMgTGVnYWN5VHhEYXRhIHtcbiAgcmV0dXJuIHR4Ll90eXBlID09PSBFVEhUcmFuc2FjdGlvblR5cGUuTEVHQUNZO1xufVxuXG5mdW5jdGlvbiBpc0VJUDE1NTlUeG4odHg6IFR4RGF0YSk6IHR4IGlzIEVJUDE1NTlUeERhdGEge1xuICByZXR1cm4gdHguX3R5cGUgPT09IEVUSFRyYW5zYWN0aW9uVHlwZS5FSVAxNTU5O1xufVxuIl19
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { Buffer } from 'buffer';
|
|
3
|
+
import { BaseCoin, BaseNetwork, EthereumNetwork } from '@bitgo-beta/statics';
|
|
4
|
+
import EthereumCommon from '@ethereumjs/common';
|
|
5
|
+
import BN from 'bn.js';
|
|
6
|
+
import { TransactionType } from '@bitgo-beta/sdk-core';
|
|
7
|
+
import { ERC1155TransferData, ERC721TransferData, FlushTokensData, NativeTransferData, SignatureParts, TokenTransferData, TransferData, TxData, WalletInitializationData, ForwarderInitializationData } from './iface';
|
|
8
|
+
import { KeyPair } from './keyPair';
|
|
9
|
+
/**
|
|
10
|
+
* @param network
|
|
11
|
+
*/
|
|
12
|
+
export declare function getCommon(network: EthereumNetwork): EthereumCommon;
|
|
13
|
+
/**
|
|
14
|
+
* Signs the transaction using the appropriate algorithm
|
|
15
|
+
* and the provided common for the blockchain
|
|
16
|
+
*
|
|
17
|
+
* @param {TxData} transactionData the transaction data to sign
|
|
18
|
+
* @param {KeyPair} keyPair the signer's keypair
|
|
19
|
+
* @param {EthereumCommon} customCommon the network's custom common
|
|
20
|
+
* @returns {string} the transaction signed and encoded
|
|
21
|
+
*/
|
|
22
|
+
export declare function signInternal(transactionData: TxData, keyPair: KeyPair, customCommon: EthereumCommon): Promise<string>;
|
|
23
|
+
/**
|
|
24
|
+
* Signs the transaction using the appropriate algorithm
|
|
25
|
+
*
|
|
26
|
+
* @param {TxData} transactionData the transaction data to sign
|
|
27
|
+
* @param {KeyPair} keyPair the signer's keypair
|
|
28
|
+
* @returns {string} the transaction signed and encoded
|
|
29
|
+
*/
|
|
30
|
+
export declare function sign(transactionData: TxData, keyPair: KeyPair): Promise<string>;
|
|
31
|
+
/**
|
|
32
|
+
* Returns the contract method encoded data
|
|
33
|
+
*
|
|
34
|
+
* @param {string} to destination address
|
|
35
|
+
* @param {number} value Amount to tranfer
|
|
36
|
+
* @param {string} data aditional method call data
|
|
37
|
+
* @param {number} expireTime expiration time for the transaction in seconds
|
|
38
|
+
* @param {number} sequenceId sequence id
|
|
39
|
+
* @param {string} signature signature of the call
|
|
40
|
+
* @returns {string} -- the contract method encoded data
|
|
41
|
+
*/
|
|
42
|
+
export declare function sendMultiSigData(to: string, value: string, data: string, expireTime: number, sequenceId: number, signature: string): string;
|
|
43
|
+
/**
|
|
44
|
+
* Returns the contract method encoded data
|
|
45
|
+
*
|
|
46
|
+
* @param {string} to destination address
|
|
47
|
+
* @param {number} value Amount to tranfer
|
|
48
|
+
* @param {string} tokenContractAddress the address of the erc20 token contract
|
|
49
|
+
* @param {number} expireTime expiration time for the transaction in seconds
|
|
50
|
+
* @param {number} sequenceId sequence id
|
|
51
|
+
* @param {string} signature signature of the call
|
|
52
|
+
* @returns {string} -- the contract method encoded data
|
|
53
|
+
*/
|
|
54
|
+
export declare function sendMultiSigTokenData(to: string, value: string, tokenContractAddress: string, expireTime: number, sequenceId: number, signature: string): string;
|
|
55
|
+
/**
|
|
56
|
+
* Get the data required to make a flush tokens contract call
|
|
57
|
+
*
|
|
58
|
+
* @param forwarderAddress The forwarder address to flush
|
|
59
|
+
* @param tokenAddress The token address to flush from
|
|
60
|
+
*/
|
|
61
|
+
export declare function flushTokensData(forwarderAddress: string, tokenAddress: string): string;
|
|
62
|
+
/**
|
|
63
|
+
* Get the data required to make a flush native coins contract call
|
|
64
|
+
*/
|
|
65
|
+
export declare function flushCoinsData(): string;
|
|
66
|
+
/**
|
|
67
|
+
* Returns the create forwarder method calling data
|
|
68
|
+
*
|
|
69
|
+
* @returns {string} - the createForwarder method encoded
|
|
70
|
+
*/
|
|
71
|
+
export declare function getAddressInitializationData(): string;
|
|
72
|
+
/**
|
|
73
|
+
* Returns whether or not the string is a valid Eth address
|
|
74
|
+
*
|
|
75
|
+
* @param {string} address - the tx hash to validate
|
|
76
|
+
* @returns {boolean} - the validation result
|
|
77
|
+
*/
|
|
78
|
+
export declare function isValidEthAddress(address: string): boolean;
|
|
79
|
+
/**
|
|
80
|
+
* Returns whether or not the string is a valid amount number
|
|
81
|
+
*
|
|
82
|
+
* @param {string} amount - the string to validate
|
|
83
|
+
* @returns {boolean} - the validation result
|
|
84
|
+
*/
|
|
85
|
+
export declare function isValidAmount(amount: string): boolean;
|
|
86
|
+
/**
|
|
87
|
+
* Returns the smart contract encoded data
|
|
88
|
+
*
|
|
89
|
+
* @param {string} data The wallet creation data to decode
|
|
90
|
+
* @returns {string[]} - The list of signer addresses
|
|
91
|
+
*/
|
|
92
|
+
export declare function decodeWalletCreationData(data: string): WalletInitializationData;
|
|
93
|
+
/**
|
|
94
|
+
* Decode the given ABI-encoded transfer data and return parsed fields
|
|
95
|
+
*
|
|
96
|
+
* @param data The data to decode
|
|
97
|
+
* @returns parsed transfer data
|
|
98
|
+
*/
|
|
99
|
+
export declare function decodeTransferData(data: string): TransferData;
|
|
100
|
+
/**
|
|
101
|
+
* Decode the given ABI-encoded transfer data for the sendMultisigToken function and return parsed fields
|
|
102
|
+
*
|
|
103
|
+
* @param data The data to decode
|
|
104
|
+
* @returns parsed token transfer data
|
|
105
|
+
*/
|
|
106
|
+
export declare function decodeTokenTransferData(data: string): TokenTransferData;
|
|
107
|
+
export declare function decodeERC721TransferData(data: string): ERC721TransferData;
|
|
108
|
+
export declare function decodeERC1155TransferData(data: string): ERC1155TransferData;
|
|
109
|
+
/**
|
|
110
|
+
* Decode the given ABI-encoded transfer data for the sendMultisig function and return parsed fields
|
|
111
|
+
*
|
|
112
|
+
* @param data The data to decode
|
|
113
|
+
* @returns parsed transfer data
|
|
114
|
+
*/
|
|
115
|
+
export declare function decodeNativeTransferData(data: string): NativeTransferData;
|
|
116
|
+
/**
|
|
117
|
+
* Decode the given ABI-encoded flush tokens data and return parsed fields
|
|
118
|
+
*
|
|
119
|
+
* @param data The data to decode
|
|
120
|
+
* @returns parsed transfer data
|
|
121
|
+
*/
|
|
122
|
+
export declare function decodeFlushTokensData(data: string): FlushTokensData;
|
|
123
|
+
/**
|
|
124
|
+
* Classify the given transaction data based as a transaction type.
|
|
125
|
+
* ETH transactions are defined by the first 8 bytes of the transaction data, also known as the method id
|
|
126
|
+
*
|
|
127
|
+
* @param {string} data The data to classify the transaction with
|
|
128
|
+
* @returns {TransactionType} The classified transaction type
|
|
129
|
+
*/
|
|
130
|
+
export declare function classifyTransaction(data: string): TransactionType;
|
|
131
|
+
/**
|
|
132
|
+
*
|
|
133
|
+
* @param {number} num number to be converted to hex
|
|
134
|
+
* @returns {string} the hex number
|
|
135
|
+
*/
|
|
136
|
+
export declare function numberToHexString(num: number): string;
|
|
137
|
+
/**
|
|
138
|
+
*
|
|
139
|
+
* @param {string} hex The hex string to be converted
|
|
140
|
+
* @returns {number} the resulting number
|
|
141
|
+
*/
|
|
142
|
+
export declare function hexStringToNumber(hex: string): number;
|
|
143
|
+
/**
|
|
144
|
+
* Generates an address of the forwarder address to be deployed
|
|
145
|
+
*
|
|
146
|
+
* @param {string} contractAddress the address which is creating this new address
|
|
147
|
+
* @param {number} contractCounter the nonce of the contract address
|
|
148
|
+
* @returns {string} the calculated forwarder contract address
|
|
149
|
+
*/
|
|
150
|
+
export declare function calculateForwarderAddress(contractAddress: string, contractCounter: number): string;
|
|
151
|
+
/**
|
|
152
|
+
* Calculate the forwarder v1 address that will be generated if `creatorAddress` creates it with salt `salt`
|
|
153
|
+
* and initcode `inicode using the create2 opcode
|
|
154
|
+
* @param {string} creatorAddress The address that is sending the tx to create a new address, hex string
|
|
155
|
+
* @param {string} salt The salt to create the address with using create2, hex string
|
|
156
|
+
* @param {string} initcode The initcode that will be deployed to the address, hex string
|
|
157
|
+
* @return {string} The calculated address
|
|
158
|
+
*/
|
|
159
|
+
export declare function calculateForwarderV1Address(creatorAddress: string, salt: string, initcode: string): string;
|
|
160
|
+
/**
|
|
161
|
+
* Take the implementation address for the proxy contract, and get the binary initcode for the associated proxy
|
|
162
|
+
* @param {string} implementationAddress The address of the implementation contract for the proxy
|
|
163
|
+
* @return {string} Binary hex string of the proxy
|
|
164
|
+
*/
|
|
165
|
+
export declare function getProxyInitcode(implementationAddress: string): string;
|
|
166
|
+
/**
|
|
167
|
+
* Convert the given signature parts to a string representation
|
|
168
|
+
*
|
|
169
|
+
* @param {SignatureParts} sig The signature to convert to string
|
|
170
|
+
* @returns {string} String representation of the signature
|
|
171
|
+
*/
|
|
172
|
+
export declare function toStringSig(sig: SignatureParts): string;
|
|
173
|
+
/**
|
|
174
|
+
* Return whether or not the given tx data has a signature
|
|
175
|
+
*
|
|
176
|
+
* @param {TxData} txData The transaction data to check for signature
|
|
177
|
+
* @returns {boolean} true if the tx has a signature, else false
|
|
178
|
+
*/
|
|
179
|
+
export declare function hasSignature(txData: TxData): boolean;
|
|
180
|
+
declare type RecursiveBufferOrString = string | Buffer | BN | RecursiveBufferOrString[];
|
|
181
|
+
/**
|
|
182
|
+
* Get the raw data decoded for some types
|
|
183
|
+
*
|
|
184
|
+
* @param {string[]} types ABI types definition
|
|
185
|
+
* @param {Buffer} serializedArgs encoded args
|
|
186
|
+
* @returns {Buffer[]} the decoded raw
|
|
187
|
+
*/
|
|
188
|
+
export declare function getRawDecoded(types: string[], serializedArgs: Buffer): RecursiveBufferOrString[];
|
|
189
|
+
/**
|
|
190
|
+
* Get the buffered bytecode from rawData using a methodId as delimiter
|
|
191
|
+
*
|
|
192
|
+
* @param {string} methodId the hex encoded method Id
|
|
193
|
+
* @param {string} rawData the hex encoded raw data
|
|
194
|
+
* @returns {Buffer} data buffered bytecode
|
|
195
|
+
*/
|
|
196
|
+
export declare function getBufferedByteCode(methodId: string, rawData: string): Buffer;
|
|
197
|
+
/**
|
|
198
|
+
* Get the statics coin object matching a given contract address if it exists
|
|
199
|
+
*
|
|
200
|
+
* @param tokenContractAddress The contract address to match against
|
|
201
|
+
* @returns statics BaseCoin object for the matching token
|
|
202
|
+
*/
|
|
203
|
+
export declare function getToken(tokenContractAddress: string, network: BaseNetwork): Readonly<BaseCoin> | undefined;
|
|
204
|
+
/**
|
|
205
|
+
* Returns the create wallet method calling data for v1 wallets
|
|
206
|
+
*
|
|
207
|
+
* @param {string[]} walletOwners - wallet owner addresses for wallet initialization transactions
|
|
208
|
+
* @param {string} salt - The salt for wallet initialization transactions
|
|
209
|
+
* @returns {string} - the createWallet method encoded
|
|
210
|
+
*/
|
|
211
|
+
export declare function getV1WalletInitializationData(walletOwners: string[], salt: string): string;
|
|
212
|
+
/**
|
|
213
|
+
* Returns the create address method calling data for v1 wallets
|
|
214
|
+
*
|
|
215
|
+
* @param {string} baseAddress - The address of the wallet contract
|
|
216
|
+
* @param {string} salt - The salt for address initialization transactions
|
|
217
|
+
* @returns {string} - the createForwarder method encoded
|
|
218
|
+
*/
|
|
219
|
+
export declare function getV1AddressInitializationData(baseAddress: string, salt: string): string;
|
|
220
|
+
/**
|
|
221
|
+
* Decode the given ABI-encoded create forwarder data and return parsed fields
|
|
222
|
+
*
|
|
223
|
+
* @param data The data to decode
|
|
224
|
+
* @returns parsed transfer data
|
|
225
|
+
*/
|
|
226
|
+
export declare function decodeForwarderCreationData(data: string): ForwarderInitializationData;
|
|
227
|
+
export {};
|
|
228
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils.ts"],"names":[],"mappings":"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"}
|