@d8x/perpetuals-sdk 2.0.8-alpha → 2.0.10-alpha
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/cjs/abi/BeaconProxy.json +71 -0
- package/dist/cjs/abi/IPerpetualManager.json +46 -0
- package/dist/cjs/abi/Maintainer.json +774 -0
- package/dist/cjs/abi/MockToken.json +347 -0
- package/dist/cjs/abi/UUPSUpgradeable.json +104 -0
- package/dist/cjs/abi/WeETH.json +310 -0
- package/dist/cjs/abi-zkevm/IPerpetualManager.json +2 -2
- package/dist/cjs/abi-zkevm/LimitOrderBook.json +910 -0
- package/dist/cjs/abi-zkevm/LimitOrderBookFactory.json +236 -0
- package/dist/cjs/contracts/BeaconProxy.d.ts +63 -0
- package/dist/cjs/contracts/BeaconProxy.js +3 -0
- package/dist/cjs/contracts/BeaconProxy.js.map +1 -0
- package/dist/cjs/contracts/IPerpetualManager.d.ts +15 -1
- package/dist/cjs/contracts/Maintainer.d.ts +799 -0
- package/dist/cjs/contracts/Maintainer.js +3 -0
- package/dist/cjs/contracts/Maintainer.js.map +1 -0
- package/dist/cjs/contracts/MockToken.d.ts +263 -0
- package/dist/cjs/contracts/MockToken.js +3 -0
- package/dist/cjs/contracts/MockToken.js.map +1 -0
- package/dist/cjs/contracts/UUPSUpgradeable.d.ts +118 -0
- package/dist/cjs/contracts/UUPSUpgradeable.js +3 -0
- package/dist/cjs/contracts/UUPSUpgradeable.js.map +1 -0
- package/dist/cjs/contracts/WeETH.d.ts +503 -0
- package/dist/cjs/contracts/WeETH.js +3 -0
- package/dist/cjs/contracts/WeETH.js.map +1 -0
- package/dist/cjs/contracts/factories/BeaconProxy__factory.d.ts +61 -0
- package/dist/cjs/contracts/factories/BeaconProxy__factory.js +89 -0
- package/dist/cjs/contracts/factories/BeaconProxy__factory.js.map +1 -0
- package/dist/cjs/contracts/factories/IPerpetualManager__factory.d.ts +35 -0
- package/dist/cjs/contracts/factories/IPerpetualManager__factory.js +46 -0
- package/dist/cjs/contracts/factories/IPerpetualManager__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/Maintainer__factory.d.ts +609 -0
- package/dist/cjs/contracts/factories/Maintainer__factory.js +792 -0
- package/dist/cjs/contracts/factories/Maintainer__factory.js.map +1 -0
- package/dist/{esm/contracts/factories/PerpStorage__factory.d.ts → cjs/contracts/factories/MockToken__factory.d.ts} +128 -115
- package/dist/cjs/contracts/factories/MockToken__factory.js +365 -0
- package/dist/cjs/contracts/factories/MockToken__factory.js.map +1 -0
- package/dist/cjs/contracts/factories/UUPSUpgradeable__factory.d.ts +87 -0
- package/dist/cjs/contracts/factories/UUPSUpgradeable__factory.js +122 -0
- package/dist/cjs/contracts/factories/UUPSUpgradeable__factory.js.map +1 -0
- package/dist/cjs/contracts/factories/WeETH__factory.d.ts +545 -0
- package/dist/cjs/contracts/factories/WeETH__factory.js +721 -0
- package/dist/cjs/contracts/factories/WeETH__factory.js.map +1 -0
- package/dist/cjs/contracts/factories/lean0/IPerpetualManager__factory.d.ts +4136 -0
- package/dist/cjs/contracts/factories/lean0/IPerpetualManager__factory.js +5324 -0
- package/dist/cjs/contracts/factories/lean0/IPerpetualManager__factory.js.map +1 -0
- package/dist/cjs/contracts/factories/lean0/LimitOrderBookFactory__factory.d.ts +189 -0
- package/dist/cjs/contracts/factories/lean0/LimitOrderBookFactory__factory.js +254 -0
- package/dist/cjs/contracts/factories/lean0/LimitOrderBookFactory__factory.js.map +1 -0
- package/dist/cjs/contracts/factories/lean0/LimitOrderBook__factory.d.ts +715 -0
- package/dist/cjs/contracts/factories/lean0/LimitOrderBook__factory.js +928 -0
- package/dist/cjs/contracts/factories/lean0/LimitOrderBook__factory.js.map +1 -0
- package/dist/cjs/contracts/factories/lean0/ShareToken__factory.d.ts +344 -0
- package/dist/cjs/contracts/factories/lean0/ShareToken__factory.js +456 -0
- package/dist/cjs/contracts/factories/lean0/ShareToken__factory.js.map +1 -0
- package/dist/cjs/contracts/factories/lean0/index.d.ts +4 -0
- package/dist/cjs/contracts/factories/lean0/index.js +15 -0
- package/dist/cjs/contracts/factories/lean0/index.js.map +1 -0
- package/dist/cjs/contracts/lean0/IPerpetualManager.d.ts +2821 -0
- package/dist/cjs/contracts/lean0/IPerpetualManager.js +3 -0
- package/dist/cjs/contracts/lean0/IPerpetualManager.js.map +1 -0
- package/dist/cjs/contracts/lean0/LimitOrderBook.d.ts +533 -0
- package/dist/cjs/contracts/lean0/LimitOrderBook.js +3 -0
- package/dist/cjs/contracts/lean0/LimitOrderBook.js.map +1 -0
- package/dist/cjs/contracts/lean0/LimitOrderBookFactory.d.ts +210 -0
- package/dist/cjs/contracts/lean0/LimitOrderBookFactory.js +3 -0
- package/dist/cjs/contracts/lean0/LimitOrderBookFactory.js.map +1 -0
- package/dist/cjs/contracts/lean0/ShareToken.d.ts +320 -0
- package/dist/cjs/contracts/lean0/ShareToken.js +3 -0
- package/dist/cjs/contracts/lean0/ShareToken.js.map +1 -0
- package/dist/cjs/contracts/lean0/index.d.ts +4 -0
- package/dist/cjs/contracts/lean0/index.js +3 -0
- package/dist/cjs/contracts/lean0/index.js.map +1 -0
- package/dist/cjs/marketData.d.ts +2 -1
- package/dist/cjs/marketData.js +46 -18
- package/dist/cjs/marketData.js.map +1 -1
- package/dist/cjs/nodeSDKTypes.d.ts +19 -0
- package/dist/cjs/nodeSDKTypes.js +29 -0
- package/dist/cjs/nodeSDKTypes.js.map +1 -1
- package/dist/cjs/perpetualDataHandler.d.ts +9 -2
- package/dist/cjs/perpetualDataHandler.js +50 -13
- package/dist/cjs/perpetualDataHandler.js.map +1 -1
- package/dist/cjs/referralCodeSigner.d.ts +38 -5
- package/dist/cjs/referralCodeSigner.js +107 -18
- package/dist/cjs/referralCodeSigner.js.map +1 -1
- package/dist/cjs/version.d.ts +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/version.js.map +1 -1
- package/dist/esm/abi/BeaconProxy.json +71 -0
- package/dist/esm/abi/IPerpetualManager.json +46 -0
- package/dist/esm/abi/Maintainer.json +774 -0
- package/dist/esm/abi/MockToken.json +347 -0
- package/dist/esm/abi/UUPSUpgradeable.json +104 -0
- package/dist/esm/abi/WeETH.json +310 -0
- package/dist/esm/abi/lean0/IPerpetualManager.json +5306 -0
- package/dist/esm/abi/lean0/LimitOrderBook.json +910 -0
- package/dist/esm/abi/lean0/LimitOrderBookFactory.json +236 -0
- package/dist/esm/abi/lean0/ShareToken.json +438 -0
- package/dist/esm/abi-zkevm/IPerpetualManager.json +2 -2
- package/dist/esm/abi-zkevm/LimitOrderBook.json +910 -0
- package/dist/esm/abi-zkevm/LimitOrderBookFactory.json +236 -0
- package/dist/esm/contracts/BeaconProxy.d.ts +63 -0
- package/dist/esm/contracts/BeaconProxy.js +2 -0
- package/dist/esm/contracts/BeaconProxy.js.map +1 -0
- package/dist/esm/contracts/IPerpetualManager.d.ts +15 -1
- package/dist/esm/contracts/Maintainer.d.ts +799 -0
- package/dist/esm/contracts/Maintainer.js +2 -0
- package/dist/esm/contracts/Maintainer.js.map +1 -0
- package/dist/esm/contracts/MockToken.d.ts +263 -0
- package/dist/esm/contracts/MockToken.js +2 -0
- package/dist/esm/contracts/MockToken.js.map +1 -0
- package/dist/esm/contracts/UUPSUpgradeable.d.ts +118 -0
- package/dist/esm/contracts/UUPSUpgradeable.js +2 -0
- package/dist/esm/contracts/UUPSUpgradeable.js.map +1 -0
- package/dist/esm/contracts/WeETH.d.ts +503 -0
- package/dist/esm/contracts/WeETH.js +2 -0
- package/dist/esm/contracts/WeETH.js.map +1 -0
- package/dist/esm/contracts/factories/BeaconProxy__factory.d.ts +61 -0
- package/dist/esm/contracts/factories/BeaconProxy__factory.js +85 -0
- package/dist/esm/contracts/factories/BeaconProxy__factory.js.map +1 -0
- package/dist/esm/contracts/factories/IPerpetualManager__factory.d.ts +35 -0
- package/dist/esm/contracts/factories/IPerpetualManager__factory.js +46 -0
- package/dist/esm/contracts/factories/IPerpetualManager__factory.js.map +1 -1
- package/dist/esm/contracts/factories/Maintainer__factory.d.ts +609 -0
- package/dist/esm/contracts/factories/Maintainer__factory.js +788 -0
- package/dist/esm/contracts/factories/Maintainer__factory.js.map +1 -0
- package/dist/esm/contracts/factories/MockToken__factory.d.ts +273 -0
- package/dist/esm/contracts/factories/{PerpStorage__factory.js → MockToken__factory.js} +139 -128
- package/dist/esm/contracts/factories/MockToken__factory.js.map +1 -0
- package/dist/esm/contracts/factories/UUPSUpgradeable__factory.d.ts +87 -0
- package/dist/esm/contracts/factories/UUPSUpgradeable__factory.js +118 -0
- package/dist/esm/contracts/factories/UUPSUpgradeable__factory.js.map +1 -0
- package/dist/esm/contracts/factories/WeETH__factory.d.ts +545 -0
- package/dist/esm/contracts/factories/WeETH__factory.js +717 -0
- package/dist/esm/contracts/factories/WeETH__factory.js.map +1 -0
- package/dist/esm/contracts/factories/lean0/IPerpetualManager__factory.d.ts +4136 -0
- package/dist/esm/contracts/factories/lean0/IPerpetualManager__factory.js +5320 -0
- package/dist/esm/contracts/factories/lean0/IPerpetualManager__factory.js.map +1 -0
- package/dist/esm/contracts/factories/lean0/LimitOrderBookFactory__factory.d.ts +189 -0
- package/dist/esm/contracts/factories/lean0/LimitOrderBookFactory__factory.js +250 -0
- package/dist/esm/contracts/factories/lean0/LimitOrderBookFactory__factory.js.map +1 -0
- package/dist/esm/contracts/factories/lean0/LimitOrderBook__factory.d.ts +715 -0
- package/dist/esm/contracts/factories/lean0/LimitOrderBook__factory.js +924 -0
- package/dist/esm/contracts/factories/lean0/LimitOrderBook__factory.js.map +1 -0
- package/dist/esm/contracts/factories/lean0/ShareToken__factory.d.ts +344 -0
- package/dist/esm/contracts/factories/lean0/ShareToken__factory.js +452 -0
- package/dist/esm/contracts/factories/lean0/ShareToken__factory.js.map +1 -0
- package/dist/esm/contracts/factories/lean0/index.d.ts +4 -0
- package/dist/esm/contracts/factories/lean0/index.js +8 -0
- package/dist/esm/contracts/factories/lean0/index.js.map +1 -0
- package/dist/esm/contracts/lean0/IPerpetualManager.d.ts +2821 -0
- package/dist/esm/contracts/lean0/IPerpetualManager.js +2 -0
- package/dist/esm/contracts/lean0/IPerpetualManager.js.map +1 -0
- package/dist/esm/contracts/lean0/LimitOrderBook.d.ts +533 -0
- package/dist/esm/contracts/lean0/LimitOrderBook.js +2 -0
- package/dist/esm/contracts/lean0/LimitOrderBook.js.map +1 -0
- package/dist/esm/contracts/lean0/LimitOrderBookFactory.d.ts +210 -0
- package/dist/esm/contracts/lean0/LimitOrderBookFactory.js +2 -0
- package/dist/esm/contracts/lean0/LimitOrderBookFactory.js.map +1 -0
- package/dist/esm/contracts/lean0/ShareToken.d.ts +320 -0
- package/dist/esm/contracts/lean0/ShareToken.js +2 -0
- package/dist/esm/contracts/lean0/ShareToken.js.map +1 -0
- package/dist/esm/contracts/lean0/index.d.ts +4 -0
- package/dist/esm/contracts/lean0/index.js +2 -0
- package/dist/esm/contracts/lean0/index.js.map +1 -0
- package/dist/esm/marketData.d.ts +2 -1
- package/dist/esm/marketData.js +46 -18
- package/dist/esm/marketData.js.map +1 -1
- package/dist/esm/nodeSDKTypes.d.ts +19 -0
- package/dist/esm/nodeSDKTypes.js +28 -1
- package/dist/esm/nodeSDKTypes.js.map +1 -1
- package/dist/esm/perpetualDataHandler.d.ts +9 -2
- package/dist/esm/perpetualDataHandler.js +50 -13
- package/dist/esm/perpetualDataHandler.js.map +1 -1
- package/dist/esm/referralCodeSigner.d.ts +38 -5
- package/dist/esm/referralCodeSigner.js +108 -19
- package/dist/esm/referralCodeSigner.js.map +1 -1
- package/dist/esm/version.d.ts +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/esm/version.js.map +1 -1
- package/package.json +4 -2
- package/src/abi/IPerpetualManager.json +46 -0
- package/src/abi-zkevm/IPerpetualManager.json +2 -2
- package/src/contracts/IPerpetualManager.ts +22 -0
- package/src/contracts/factories/IPerpetualManager__factory.ts +46 -0
- package/src/marketData.ts +54 -17
- package/src/nodeSDKTypes.ts +31 -0
- package/src/perpetualDataHandler.ts +54 -17
- package/src/referralCodeSigner.ts +174 -22
- package/src/version.ts +1 -1
- package/dist/esm/contracts/factories/PerpStorage__factory.js.map +0 -1
|
@@ -1,5 +1,22 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import {
|
|
2
|
+
AbiCoder,
|
|
3
|
+
JsonRpcProvider,
|
|
4
|
+
keccak256,
|
|
5
|
+
Provider,
|
|
6
|
+
Signer,
|
|
7
|
+
TypedDataDomain,
|
|
8
|
+
TypedDataField,
|
|
9
|
+
verifyMessage,
|
|
10
|
+
verifyTypedData,
|
|
11
|
+
Wallet,
|
|
12
|
+
} from "ethers";
|
|
13
|
+
import {
|
|
14
|
+
APIReferPayload,
|
|
15
|
+
APIReferralCodePayload,
|
|
16
|
+
APIReferralCodeSelectionPayload,
|
|
17
|
+
referralDomain,
|
|
18
|
+
referralTypes,
|
|
19
|
+
} from "./nodeSDKTypes";
|
|
3
20
|
|
|
4
21
|
/**
|
|
5
22
|
* This is a 'standalone' class that deals with signatures
|
|
@@ -14,11 +31,26 @@ import type { APIReferPayload, APIReferralCodePayload, APIReferralCodeSelectionP
|
|
|
14
31
|
export default class ReferralCodeSigner {
|
|
15
32
|
private provider: Provider | undefined;
|
|
16
33
|
private rpcURL: string;
|
|
17
|
-
private signingFun: (x: string | Uint8Array) => Promise<string
|
|
34
|
+
private signingFun: ((x: string | Uint8Array) => Promise<string>) | undefined;
|
|
35
|
+
private signingTypedDataFun:
|
|
36
|
+
| ((
|
|
37
|
+
domain: TypedDataDomain,
|
|
38
|
+
types: Record<string, TypedDataField[]>,
|
|
39
|
+
value: Record<string, any>
|
|
40
|
+
) => Promise<string>)
|
|
41
|
+
| undefined;
|
|
18
42
|
private address: string;
|
|
19
43
|
|
|
20
44
|
constructor(
|
|
21
|
-
signer:
|
|
45
|
+
signer:
|
|
46
|
+
| Signer
|
|
47
|
+
| string
|
|
48
|
+
| ((x: string | Uint8Array) => Promise<string>)
|
|
49
|
+
| ((
|
|
50
|
+
domain: TypedDataDomain,
|
|
51
|
+
types: Record<string, TypedDataField[]>,
|
|
52
|
+
value: Record<string, any>
|
|
53
|
+
) => Promise<string>),
|
|
22
54
|
address: string,
|
|
23
55
|
_rpcURL: string
|
|
24
56
|
) {
|
|
@@ -27,38 +59,88 @@ export default class ReferralCodeSigner {
|
|
|
27
59
|
if (typeof signer == "string") {
|
|
28
60
|
const wallet = this.createSignerInstance(signer);
|
|
29
61
|
this.signingFun = (x: string | Uint8Array) => wallet.signMessage(x);
|
|
62
|
+
this.signingTypedDataFun = (
|
|
63
|
+
domain: TypedDataDomain,
|
|
64
|
+
types: Record<string, TypedDataField[]>,
|
|
65
|
+
value: Record<string, any>
|
|
66
|
+
) => wallet.signTypedData(domain, types, value);
|
|
30
67
|
} else if ("signMessage" in signer) {
|
|
31
68
|
this.signingFun = (x: string | Uint8Array) => signer.signMessage(x);
|
|
69
|
+
this.signingTypedDataFun = (
|
|
70
|
+
domain: TypedDataDomain,
|
|
71
|
+
types: Record<string, TypedDataField[]>,
|
|
72
|
+
value: Record<string, any>
|
|
73
|
+
) => signer.signTypedData(domain, types, value);
|
|
74
|
+
} else if (signer.length === 1) {
|
|
75
|
+
this.signingFun = signer as (x: string | Uint8Array) => Promise<string>;
|
|
32
76
|
} else {
|
|
33
|
-
this.
|
|
77
|
+
this.signingTypedDataFun = signer as (
|
|
78
|
+
domain: TypedDataDomain,
|
|
79
|
+
types: Record<string, TypedDataField[]>,
|
|
80
|
+
value: Record<string, any>
|
|
81
|
+
) => Promise<string>;
|
|
34
82
|
}
|
|
35
83
|
}
|
|
36
84
|
|
|
37
85
|
public createSignerInstance(_privateKey: string): Signer {
|
|
38
86
|
this.provider = new JsonRpcProvider(this.rpcURL);
|
|
39
87
|
const wallet = new Wallet(_privateKey);
|
|
40
|
-
|
|
88
|
+
wallet.connect(this.provider);
|
|
89
|
+
this.signingFun = (x: string | Uint8Array) => wallet.signMessage(x);
|
|
90
|
+
this.signingTypedDataFun = (
|
|
91
|
+
domain: TypedDataDomain,
|
|
92
|
+
types: Record<string, TypedDataField[]>,
|
|
93
|
+
value: Record<string, any>
|
|
94
|
+
) => wallet.signTypedData(domain, types, value);
|
|
95
|
+
return wallet;
|
|
41
96
|
}
|
|
42
97
|
|
|
43
98
|
public async getSignatureForNewReferral(rp: APIReferPayload): Promise<string> {
|
|
44
|
-
if (this.
|
|
99
|
+
if (this.signingTypedDataFun != undefined) {
|
|
100
|
+
return await this.signingTypedDataFun(
|
|
101
|
+
referralDomain,
|
|
102
|
+
{
|
|
103
|
+
NewReferral: referralTypes.NewReferral,
|
|
104
|
+
},
|
|
105
|
+
ReferralCodeSigner.newReferralPayloadToTypedData(rp)
|
|
106
|
+
);
|
|
107
|
+
} else if (this.signingFun != undefined) {
|
|
108
|
+
return await ReferralCodeSigner.getSignatureForNewReferral(rp, this.signingFun);
|
|
109
|
+
} else {
|
|
45
110
|
throw Error("no signer defined, call createSignerInstance()");
|
|
46
111
|
}
|
|
47
|
-
return await ReferralCodeSigner.getSignatureForNewReferral(rp, this.signingFun);
|
|
48
112
|
}
|
|
49
113
|
|
|
50
114
|
public async getSignatureForNewCode(rc: APIReferralCodePayload): Promise<string> {
|
|
51
|
-
if (this.
|
|
115
|
+
if (this.signingTypedDataFun != undefined) {
|
|
116
|
+
return await this.signingTypedDataFun(
|
|
117
|
+
referralDomain,
|
|
118
|
+
{
|
|
119
|
+
NewCode: referralTypes.NewCode,
|
|
120
|
+
},
|
|
121
|
+
ReferralCodeSigner.referralCodeNewCodePayloadToTypedData(rc)
|
|
122
|
+
);
|
|
123
|
+
} else if (this.signingFun != undefined) {
|
|
124
|
+
return await ReferralCodeSigner.getSignatureForNewCode(rc, this.signingFun);
|
|
125
|
+
} else {
|
|
52
126
|
throw Error("no signer defined, call createSignerInstance()");
|
|
53
127
|
}
|
|
54
|
-
return await ReferralCodeSigner.getSignatureForNewCode(rc, this.signingFun);
|
|
55
128
|
}
|
|
56
129
|
|
|
57
130
|
public async getSignatureForCodeSelection(rc: APIReferralCodeSelectionPayload): Promise<string> {
|
|
58
|
-
if (this.
|
|
131
|
+
if (this.signingTypedDataFun != undefined) {
|
|
132
|
+
return await this.signingTypedDataFun(
|
|
133
|
+
referralDomain,
|
|
134
|
+
{
|
|
135
|
+
CodeSelection: referralTypes.CodeSelection,
|
|
136
|
+
},
|
|
137
|
+
ReferralCodeSigner.codeSelectionPayloadToTypedData(rc)
|
|
138
|
+
);
|
|
139
|
+
} else if (this.signingFun != undefined) {
|
|
140
|
+
return await ReferralCodeSigner.getSignatureForCodeSelection(rc, this.signingFun);
|
|
141
|
+
} else {
|
|
59
142
|
throw Error("no signer defined, call createSignerInstance()");
|
|
60
143
|
}
|
|
61
|
-
return await ReferralCodeSigner.getSignatureForCodeSelection(rc, this.signingFun);
|
|
62
144
|
}
|
|
63
145
|
|
|
64
146
|
public async getAddress(): Promise<string> {
|
|
@@ -127,6 +209,20 @@ export default class ReferralCodeSigner {
|
|
|
127
209
|
return digest;
|
|
128
210
|
}
|
|
129
211
|
|
|
212
|
+
/**
|
|
213
|
+
* Convert payload to data struct to sign
|
|
214
|
+
* @param rc payload
|
|
215
|
+
* @returns typed data
|
|
216
|
+
*/
|
|
217
|
+
public static newReferralPayloadToTypedData(rc: APIReferPayload) {
|
|
218
|
+
return {
|
|
219
|
+
ParentAddr: rc.parentAddr as `0x${string}`,
|
|
220
|
+
ReferToAddr: rc.referToAddr as `0x${string}`,
|
|
221
|
+
PassOnPercTDF: Math.round(rc.passOnPercTDF),
|
|
222
|
+
CreatedOn: BigInt(Math.round(rc.createdOn)),
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
|
|
130
226
|
/**
|
|
131
227
|
* Create digest for referralCodePayload that is to be signed
|
|
132
228
|
* @param rc payload
|
|
@@ -144,6 +240,20 @@ export default class ReferralCodeSigner {
|
|
|
144
240
|
return digest;
|
|
145
241
|
}
|
|
146
242
|
|
|
243
|
+
/**
|
|
244
|
+
* Convert payload to data struct to sign
|
|
245
|
+
* @param rc payload
|
|
246
|
+
* @returns typed data
|
|
247
|
+
*/
|
|
248
|
+
public static referralCodeNewCodePayloadToTypedData(rc: APIReferralCodePayload) {
|
|
249
|
+
return {
|
|
250
|
+
Code: rc.code,
|
|
251
|
+
ReferrerAddr: rc.referrerAddr as `0x${string}`,
|
|
252
|
+
PassOnPercTDF: Math.round(rc.passOnPercTDF),
|
|
253
|
+
CreatedOn: BigInt(Math.round(rc.createdOn)),
|
|
254
|
+
};
|
|
255
|
+
}
|
|
256
|
+
|
|
147
257
|
/**
|
|
148
258
|
* Create digest for APIReferralCodeSelectionPayload that is to be signed
|
|
149
259
|
* @param rc payload
|
|
@@ -157,6 +267,19 @@ export default class ReferralCodeSigner {
|
|
|
157
267
|
return digest;
|
|
158
268
|
}
|
|
159
269
|
|
|
270
|
+
/**
|
|
271
|
+
* Convert payload to data struct to sign
|
|
272
|
+
* @param rc payload
|
|
273
|
+
* @returns typed data
|
|
274
|
+
*/
|
|
275
|
+
public static codeSelectionPayloadToTypedData(rc: APIReferralCodeSelectionPayload) {
|
|
276
|
+
return {
|
|
277
|
+
Code: rc.code,
|
|
278
|
+
TraderAddr: rc.traderAddr as `0x${string}`,
|
|
279
|
+
CreatedOn: BigInt(Math.round(rc.createdOn)),
|
|
280
|
+
};
|
|
281
|
+
}
|
|
282
|
+
|
|
160
283
|
/**
|
|
161
284
|
* Check whether signature is correct on payload:
|
|
162
285
|
* - the referrer always signs
|
|
@@ -164,31 +287,60 @@ export default class ReferralCodeSigner {
|
|
|
164
287
|
* @param rc referralcode payload with a signature
|
|
165
288
|
* @returns true if correctly signed, false otherwise
|
|
166
289
|
*/
|
|
167
|
-
public static
|
|
290
|
+
public static checkNewCodeSignature(rc: APIReferralCodePayload) {
|
|
168
291
|
if (rc.signature == undefined || rc.signature == "") {
|
|
169
292
|
return false;
|
|
170
293
|
}
|
|
171
294
|
try {
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
const signerAddress =
|
|
295
|
+
// typed-data (^2.x.x)
|
|
296
|
+
const typedData = ReferralCodeSigner.referralCodeNewCodePayloadToTypedData(rc);
|
|
297
|
+
const signerAddress = verifyTypedData(
|
|
298
|
+
referralDomain,
|
|
299
|
+
{ NewCode: referralTypes.NewCode },
|
|
300
|
+
typedData,
|
|
301
|
+
rc.signature
|
|
302
|
+
);
|
|
175
303
|
return rc.referrerAddr.toLowerCase() == signerAddress.toLowerCase();
|
|
176
304
|
} catch (err) {
|
|
177
|
-
|
|
305
|
+
console.log(err);
|
|
306
|
+
// digest (1.x.x)
|
|
307
|
+
try {
|
|
308
|
+
let digest = ReferralCodeSigner._referralCodeNewCodePayloadToMessage(rc);
|
|
309
|
+
let digestBuffer = Buffer.from(digest.substring(2, digest.length), "hex");
|
|
310
|
+
const signerAddress = verifyMessage(digestBuffer, rc.signature);
|
|
311
|
+
return rc.referrerAddr.toLowerCase() == signerAddress.toLowerCase();
|
|
312
|
+
} catch (err) {
|
|
313
|
+
console.log(err);
|
|
314
|
+
return false;
|
|
315
|
+
}
|
|
178
316
|
}
|
|
179
317
|
}
|
|
180
318
|
|
|
181
|
-
public static
|
|
319
|
+
public static checkCodeSelectionSignature(rc: APIReferralCodeSelectionPayload) {
|
|
182
320
|
if (rc.signature == undefined || rc.signature == "") {
|
|
183
321
|
return false;
|
|
184
322
|
}
|
|
185
323
|
try {
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
const signerAddress =
|
|
324
|
+
// typed-data (^2.x.x)
|
|
325
|
+
const typedData = ReferralCodeSigner.codeSelectionPayloadToTypedData(rc);
|
|
326
|
+
const signerAddress = verifyTypedData(
|
|
327
|
+
referralDomain,
|
|
328
|
+
{ CodeSelection: referralTypes.CodeSelection },
|
|
329
|
+
typedData,
|
|
330
|
+
rc.signature
|
|
331
|
+
);
|
|
189
332
|
return rc.traderAddr.toLowerCase() == signerAddress.toLowerCase();
|
|
190
333
|
} catch (err) {
|
|
191
|
-
|
|
334
|
+
console.log(err);
|
|
335
|
+
// digest (1.x.x)
|
|
336
|
+
try {
|
|
337
|
+
let digest = ReferralCodeSigner._codeSelectionPayloadToMessage(rc);
|
|
338
|
+
let digestBuffer = Buffer.from(digest.substring(2, digest.length), "hex");
|
|
339
|
+
const signerAddress = verifyMessage(digestBuffer, rc.signature);
|
|
340
|
+
return rc.traderAddr.toLowerCase() == signerAddress.toLowerCase();
|
|
341
|
+
} catch (err) {
|
|
342
|
+
return false;
|
|
343
|
+
}
|
|
192
344
|
}
|
|
193
345
|
}
|
|
194
346
|
}
|
package/src/version.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const D8X_SDK_VERSION = "2.0.
|
|
1
|
+
export const D8X_SDK_VERSION = "2.0.10-alpha";
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PerpStorage__factory.js","sourceRoot":"","sources":["../../../../src/contracts/factories/PerpStorage__factory.ts"],"names":[],"mappings":"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"}
|