@arkecosystem/typescript-crypto 0.0.21 → 0.0.22
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/index.js +23 -0
- package/dist/transactions/builders/TokenApproveBuilder.d.ts +10 -0
- package/dist/transactions/builders/TokenApproveBuilder.d.ts.map +1 -0
- package/dist/transactions/builders/TokenApproveBuilder.js +25 -0
- package/dist/transactions/builders/index.d.ts +1 -0
- package/dist/transactions/builders/index.d.ts.map +1 -1
- package/dist/transactions/builders/index.js +1 -0
- package/dist/types.d.ts +4 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/transactions/builders/TokenApproveBuilder.ts +35 -0
- package/src/transactions/builders/index.ts +1 -0
- package/src/types.ts +5 -0
- package/tests/fixtures/transactions/token-approve.json +17 -0
- package/tests/unit/transactions/builders/TokenApproveBuilder.test.ts +138 -0
package/dist/index.js
CHANGED
|
@@ -28487,6 +28487,28 @@ var TransactionTypeIdentifier = class _TransactionTypeIdentifier {
|
|
|
28487
28487
|
}
|
|
28488
28488
|
};
|
|
28489
28489
|
|
|
28490
|
+
// src/transactions/builders/TokenApproveBuilder.ts
|
|
28491
|
+
var TokenApproveBuilder = class extends AbstractTransactionBuilder {
|
|
28492
|
+
constructor(data) {
|
|
28493
|
+
super(data);
|
|
28494
|
+
}
|
|
28495
|
+
static new(data) {
|
|
28496
|
+
return new this(data);
|
|
28497
|
+
}
|
|
28498
|
+
contractAddress(address) {
|
|
28499
|
+
this.transaction.data.to = address;
|
|
28500
|
+
return this;
|
|
28501
|
+
}
|
|
28502
|
+
spender(address, amount) {
|
|
28503
|
+
const payload = new AbiEncoder("token" /* TOKEN */).encodeFunctionCall("approve", [address, amount]);
|
|
28504
|
+
this.transaction.data["data"] = Helpers.removeLeadingHexZero(payload);
|
|
28505
|
+
return this;
|
|
28506
|
+
}
|
|
28507
|
+
getTransactionInstance(data) {
|
|
28508
|
+
return new EvmCall(data);
|
|
28509
|
+
}
|
|
28510
|
+
};
|
|
28511
|
+
|
|
28490
28512
|
// src/transactions/builders/TokenTransferBuilder.ts
|
|
28491
28513
|
var TokenTransferBuilder = class extends AbstractTransactionBuilder {
|
|
28492
28514
|
constructor(data) {
|
|
@@ -28911,6 +28933,7 @@ export {
|
|
|
28911
28933
|
Serializer,
|
|
28912
28934
|
Slot,
|
|
28913
28935
|
Testnet,
|
|
28936
|
+
TokenApproveBuilder,
|
|
28914
28937
|
Abi_Token_default as TokenContract,
|
|
28915
28938
|
TokenTransferBuilder,
|
|
28916
28939
|
TransactionDataEncoder,
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ITokenApproveBuilder, ITransaction } from "@/types";
|
|
2
|
+
import { AbstractTransactionBuilder } from "./AbstractTransactionBuilder";
|
|
3
|
+
export declare class TokenApproveBuilder extends AbstractTransactionBuilder<ITokenApproveBuilder> implements ITokenApproveBuilder {
|
|
4
|
+
constructor(data?: Record<string, unknown>);
|
|
5
|
+
static new(data?: Record<string, unknown>): TokenApproveBuilder;
|
|
6
|
+
contractAddress(address: string): TokenApproveBuilder;
|
|
7
|
+
spender(address: string, amount: bigint): TokenApproveBuilder;
|
|
8
|
+
protected getTransactionInstance(data?: Record<string, unknown>): ITransaction;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=TokenApproveBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TokenApproveBuilder.d.ts","sourceRoot":"","sources":["../../../src/transactions/builders/TokenApproveBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAmB,MAAM,SAAS,CAAC;AAE9E,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAM1E,qBAAa,mBACZ,SAAQ,0BAA0B,CAAC,oBAAoB,CACvD,YAAW,oBAAoB;gBAEZ,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;WAInC,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,mBAAmB;IAI/D,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,mBAAmB;IAKrD,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,mBAAmB;IAMpE,SAAS,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,YAAY;CAG9E"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { AbstractTransactionBuilder } from "./AbstractTransactionBuilder";
|
|
2
|
+
import { EvmCall } from "@/transactions/types/EvmCall";
|
|
3
|
+
import { Helpers } from "@/utils/Helpers";
|
|
4
|
+
import { AbiEncoder } from "@/utils";
|
|
5
|
+
import { ContractAbiType } from "@/enums";
|
|
6
|
+
export class TokenApproveBuilder extends AbstractTransactionBuilder {
|
|
7
|
+
constructor(data) {
|
|
8
|
+
super(data);
|
|
9
|
+
}
|
|
10
|
+
static new(data) {
|
|
11
|
+
return new this(data);
|
|
12
|
+
}
|
|
13
|
+
contractAddress(address) {
|
|
14
|
+
this.transaction.data.to = address;
|
|
15
|
+
return this;
|
|
16
|
+
}
|
|
17
|
+
spender(address, amount) {
|
|
18
|
+
const payload = new AbiEncoder(ContractAbiType.TOKEN).encodeFunctionCall("approve", [address, amount]);
|
|
19
|
+
this.transaction.data["data"] = Helpers.removeLeadingHexZero(payload);
|
|
20
|
+
return this;
|
|
21
|
+
}
|
|
22
|
+
getTransactionInstance(data) {
|
|
23
|
+
return new EvmCall(data);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/transactions/builders/index.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAC;AAC7C,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/transactions/builders/index.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAC;AAC7C,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,eAAe,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -71,6 +71,10 @@ export interface ITokenTransferBuilder extends ITransactionBuilder<ITokenTransfe
|
|
|
71
71
|
recipient(address: string, amount: bigint): ITokenTransferBuilder;
|
|
72
72
|
contractAddress(address: string): ITokenTransferBuilder;
|
|
73
73
|
}
|
|
74
|
+
export interface ITokenApproveBuilder extends ITransactionBuilder<ITokenApproveBuilder> {
|
|
75
|
+
spender(address: string, amount: bigint): ITokenApproveBuilder;
|
|
76
|
+
contractAddress(address: string): ITokenApproveBuilder;
|
|
77
|
+
}
|
|
74
78
|
export interface IMultipaymentBuilder extends ITransactionBuilder<IMultipaymentBuilder> {
|
|
75
79
|
pay(address: string, amount: string | BigNumber): IMultipaymentBuilder;
|
|
76
80
|
}
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { ITokenApproveBuilder, ITransaction, TransactionData } from "@/types";
|
|
2
|
+
|
|
3
|
+
import { AbstractTransactionBuilder } from "./AbstractTransactionBuilder";
|
|
4
|
+
import { EvmCall } from "@/transactions/types/EvmCall";
|
|
5
|
+
import { Helpers } from "@/utils/Helpers";
|
|
6
|
+
import { AbiEncoder } from "@/utils";
|
|
7
|
+
import { ContractAbiType } from "@/enums";
|
|
8
|
+
|
|
9
|
+
export class TokenApproveBuilder
|
|
10
|
+
extends AbstractTransactionBuilder<ITokenApproveBuilder>
|
|
11
|
+
implements ITokenApproveBuilder
|
|
12
|
+
{
|
|
13
|
+
public constructor(data?: Record<string, unknown>) {
|
|
14
|
+
super(data);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
public static new(data?: Record<string, unknown>): TokenApproveBuilder {
|
|
18
|
+
return new this(data);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
public contractAddress(address: string): TokenApproveBuilder {
|
|
22
|
+
this.transaction.data.to = address;
|
|
23
|
+
return this;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
public spender(address: string, amount: bigint): TokenApproveBuilder {
|
|
27
|
+
const payload = new AbiEncoder(ContractAbiType.TOKEN).encodeFunctionCall("approve", [address, amount]);
|
|
28
|
+
this.transaction.data["data"] = Helpers.removeLeadingHexZero(payload);
|
|
29
|
+
return this;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
protected getTransactionInstance(data?: Record<string, unknown>): ITransaction {
|
|
33
|
+
return new EvmCall(data as TransactionData);
|
|
34
|
+
}
|
|
35
|
+
}
|
package/src/types.ts
CHANGED
|
@@ -88,6 +88,11 @@ export interface ITokenTransferBuilder extends ITransactionBuilder<ITokenTransfe
|
|
|
88
88
|
contractAddress(address: string): ITokenTransferBuilder;
|
|
89
89
|
}
|
|
90
90
|
|
|
91
|
+
export interface ITokenApproveBuilder extends ITransactionBuilder<ITokenApproveBuilder> {
|
|
92
|
+
spender(address: string, amount: bigint): ITokenApproveBuilder;
|
|
93
|
+
contractAddress(address: string): ITokenApproveBuilder;
|
|
94
|
+
}
|
|
95
|
+
|
|
91
96
|
export interface IMultipaymentBuilder extends ITransactionBuilder<IMultipaymentBuilder> {
|
|
92
97
|
pay(address: string, amount: string | BigNumber): IMultipaymentBuilder;
|
|
93
98
|
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"data": {
|
|
3
|
+
"value": "0",
|
|
4
|
+
"senderPublicKey": "0243333347c8cbf4e3cbc7a96964181d02a2b0c854faa2fef86b4b8d92afcf473d",
|
|
5
|
+
"gasPrice": "5000000000",
|
|
6
|
+
"gasLimit": "21000",
|
|
7
|
+
"nonce": "1",
|
|
8
|
+
"data": "095ea7b30000000000000000000000006f0182a0cc707b055322ccf6d4cb6a5aff1aeb2200000000000000000000000000000000000000000000000000000000000f4240",
|
|
9
|
+
"amount": "1000000",
|
|
10
|
+
"to": "0x6F0182a0cc707b055322CcF6d4CB6a5Aff1aEb22",
|
|
11
|
+
"v": 1,
|
|
12
|
+
"r": "d7d685d9522fca92229945b7dc0dbdfb55623c60b4363d838ee9322a4a59717e",
|
|
13
|
+
"s": "15118d7611deb76208375b9c49731723e407ddfb1264e7ca6ebe177fd326328b",
|
|
14
|
+
"hash": "741fd2c107771259f490b3c731dd026e3587e5790b5f5ae95627bd1009b87a09"
|
|
15
|
+
},
|
|
16
|
+
"serialized": "f8ab0185012a05f200825208946f0182a0cc707b055322ccf6d4cb6a5aff1aeb2280b844095ea7b30000000000000000000000006f0182a0cc707b055322ccf6d4cb6a5aff1aeb2200000000000000000000000000000000000000000000000000000000000f4240825c6ca0d7d685d9522fca92229945b7dc0dbdfb55623c60b4363d838ee9322a4a59717ea015118d7611deb76208375b9c49731723e407ddfb1264e7ca6ebe177fd326328b"
|
|
17
|
+
}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { TokenApproveBuilder } from "@/transactions/builders/TokenApproveBuilder";
|
|
2
|
+
import identityFixture from "@tests/fixtures/identity.json";
|
|
3
|
+
import fixture from "@tests/fixtures/transactions/token-approve.json";
|
|
4
|
+
|
|
5
|
+
it("should build a token approve", async () => {
|
|
6
|
+
const transaction = (
|
|
7
|
+
await TokenApproveBuilder.new()
|
|
8
|
+
.spender(fixture.data.to, BigInt(fixture.data.amount))
|
|
9
|
+
.to(fixture.data.to)
|
|
10
|
+
.nonce(fixture.data.nonce)
|
|
11
|
+
.gasPrice(fixture.data.gasPrice)
|
|
12
|
+
.gasLimit(fixture.data.gasLimit)
|
|
13
|
+
.sign(identityFixture.passphrase)
|
|
14
|
+
).transaction;
|
|
15
|
+
|
|
16
|
+
expect(transaction.data.gasPrice).toBe(fixture.data.gasPrice);
|
|
17
|
+
expect(transaction.data.nonce).toBe(fixture.data.nonce);
|
|
18
|
+
expect(transaction.data.gasLimit).toBe(fixture.data.gasLimit);
|
|
19
|
+
expect(transaction.data.value).toBe("0");
|
|
20
|
+
expect(transaction.data.v).toBe(fixture.data.v);
|
|
21
|
+
expect(transaction.data.r).toBe(fixture.data.r);
|
|
22
|
+
expect(transaction.data.s).toBe(fixture.data.s);
|
|
23
|
+
expect(transaction.data.hash).toBe(fixture.data.hash);
|
|
24
|
+
|
|
25
|
+
expect(transaction.serialize().toString("hex")).toEqual(fixture.serialized);
|
|
26
|
+
expect(transaction.verify()).toBe(true);
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
it("should sign a token approve", async () => {
|
|
30
|
+
const { transaction } = await TokenApproveBuilder.new()
|
|
31
|
+
.spender(fixture.data.to, BigInt(fixture.data.amount))
|
|
32
|
+
.to(fixture.data.to)
|
|
33
|
+
.nonce(fixture.data.nonce)
|
|
34
|
+
.gasPrice(fixture.data.gasPrice)
|
|
35
|
+
.gasLimit(fixture.data.gasLimit)
|
|
36
|
+
.sign(identityFixture.passphrase);
|
|
37
|
+
|
|
38
|
+
expect(transaction.data.gasPrice).toBe(fixture.data.gasPrice);
|
|
39
|
+
expect(transaction.data.nonce).toBe(fixture.data.nonce);
|
|
40
|
+
expect(transaction.data.gasLimit).toBe(fixture.data.gasLimit);
|
|
41
|
+
expect(transaction.data.to).toBe(fixture.data.to);
|
|
42
|
+
expect(transaction.data.value).toBe(fixture.data.value);
|
|
43
|
+
expect(transaction.data.v).toBe(fixture.data.v);
|
|
44
|
+
expect(transaction.data.r).toBe(fixture.data.r);
|
|
45
|
+
expect(transaction.data.s).toBe(fixture.data.s);
|
|
46
|
+
expect(transaction.data.hash).toBe(fixture.data.hash);
|
|
47
|
+
|
|
48
|
+
expect(transaction.serialize().toString("hex")).toEqual(fixture.serialized);
|
|
49
|
+
expect(transaction.verify()).toBe(true);
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
it("should verify", async () => {
|
|
53
|
+
const transaction = await TokenApproveBuilder.new()
|
|
54
|
+
.spender(fixture.data.to, BigInt(fixture.data.amount))
|
|
55
|
+
.to(fixture.data.to)
|
|
56
|
+
.nonce(fixture.data.nonce)
|
|
57
|
+
.gasPrice(fixture.data.gasPrice)
|
|
58
|
+
.gasLimit(fixture.data.gasLimit)
|
|
59
|
+
.sign(identityFixture.passphrase);
|
|
60
|
+
|
|
61
|
+
expect(transaction.verify()).toBe(true);
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
it("should convert to an array", async () => {
|
|
65
|
+
const transaction = await TokenApproveBuilder.new()
|
|
66
|
+
.spender(fixture.data.to, BigInt(fixture.data.amount))
|
|
67
|
+
.to(fixture.data.to)
|
|
68
|
+
.nonce(fixture.data.nonce)
|
|
69
|
+
.gasPrice(fixture.data.gasPrice)
|
|
70
|
+
.gasLimit(fixture.data.gasLimit)
|
|
71
|
+
.sign(identityFixture.passphrase);
|
|
72
|
+
|
|
73
|
+
expect(transaction.toObject()).toEqual({
|
|
74
|
+
data: fixture.data.data,
|
|
75
|
+
to: fixture.data.to,
|
|
76
|
+
value: fixture.data.value,
|
|
77
|
+
gasPrice: fixture.data.gasPrice,
|
|
78
|
+
gasLimit: fixture.data.gasLimit,
|
|
79
|
+
nonce: fixture.data.nonce,
|
|
80
|
+
v: fixture.data.v,
|
|
81
|
+
r: fixture.data.r,
|
|
82
|
+
s: fixture.data.s,
|
|
83
|
+
senderPublicKey: fixture.data.senderPublicKey,
|
|
84
|
+
hash: fixture.data.hash,
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
it("should convert to json", async () => {
|
|
89
|
+
const transaction = await TokenApproveBuilder.new()
|
|
90
|
+
.spender(fixture.data.to, BigInt(fixture.data.amount))
|
|
91
|
+
.to(fixture.data.to)
|
|
92
|
+
.nonce(fixture.data.nonce)
|
|
93
|
+
.gasPrice(fixture.data.gasPrice)
|
|
94
|
+
.gasLimit(fixture.data.gasLimit)
|
|
95
|
+
.sign(identityFixture.passphrase);
|
|
96
|
+
|
|
97
|
+
expect(transaction.toJson()).toEqual(
|
|
98
|
+
JSON.stringify({
|
|
99
|
+
gasPrice: fixture.data.gasPrice,
|
|
100
|
+
hash: fixture.data.hash,
|
|
101
|
+
gasLimit: fixture.data.gasLimit,
|
|
102
|
+
nonce: fixture.data.nonce,
|
|
103
|
+
senderPublicKey: fixture.data.senderPublicKey,
|
|
104
|
+
to: fixture.data.to,
|
|
105
|
+
value: fixture.data.value,
|
|
106
|
+
data: fixture.data.data,
|
|
107
|
+
r: fixture.data.r,
|
|
108
|
+
s: fixture.data.s,
|
|
109
|
+
v: fixture.data.v,
|
|
110
|
+
}),
|
|
111
|
+
);
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
it("should convert to string", async () => {
|
|
115
|
+
const transaction = await TokenApproveBuilder.new()
|
|
116
|
+
.spender(fixture.data.to, BigInt(fixture.data.amount))
|
|
117
|
+
.to(fixture.data.to)
|
|
118
|
+
.nonce(fixture.data.nonce)
|
|
119
|
+
.gasPrice(fixture.data.gasPrice)
|
|
120
|
+
.gasLimit(fixture.data.gasLimit)
|
|
121
|
+
.sign(identityFixture.passphrase);
|
|
122
|
+
|
|
123
|
+
expect(transaction.toString()).toEqual(
|
|
124
|
+
JSON.stringify({
|
|
125
|
+
gasPrice: fixture.data.gasPrice,
|
|
126
|
+
hash: fixture.data.hash,
|
|
127
|
+
gasLimit: fixture.data.gasLimit,
|
|
128
|
+
nonce: fixture.data.nonce,
|
|
129
|
+
senderPublicKey: fixture.data.senderPublicKey,
|
|
130
|
+
to: fixture.data.to,
|
|
131
|
+
value: fixture.data.value,
|
|
132
|
+
data: fixture.data.data,
|
|
133
|
+
r: fixture.data.r,
|
|
134
|
+
s: fixture.data.s,
|
|
135
|
+
v: fixture.data.v,
|
|
136
|
+
}),
|
|
137
|
+
);
|
|
138
|
+
});
|