@bosonprotocol/core-sdk 1.12.0-alpha.17 → 1.12.0-alpha.2
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/accounts/index.d.ts +11 -2
- package/dist/cjs/accounts/index.d.ts.map +1 -1
- package/dist/cjs/accounts/index.js.map +1 -1
- package/dist/cjs/accounts/interface.d.ts +2 -5
- package/dist/cjs/accounts/interface.d.ts.map +1 -1
- package/dist/cjs/accounts/interface.js +7 -27
- package/dist/cjs/accounts/interface.js.map +1 -1
- package/dist/cjs/core-sdk.d.ts +5 -42
- package/dist/cjs/core-sdk.d.ts.map +1 -1
- package/dist/cjs/core-sdk.js +11 -152
- package/dist/cjs/core-sdk.js.map +1 -1
- package/dist/cjs/exchanges/handler.d.ts.map +1 -1
- package/dist/cjs/exchanges/handler.js +0 -1
- package/dist/cjs/exchanges/handler.js.map +1 -1
- package/dist/cjs/meta-tx/handler.d.ts +14 -0
- package/dist/cjs/meta-tx/handler.d.ts.map +1 -1
- package/dist/cjs/meta-tx/handler.js +60 -14
- package/dist/cjs/meta-tx/handler.js.map +1 -1
- package/dist/cjs/offers/getOfferStatus.d.ts +2 -2
- package/dist/cjs/offers/getOfferStatus.d.ts.map +1 -1
- package/dist/cjs/offers/getOfferStatus.js.map +1 -1
- package/dist/cjs/offers/index.d.ts +33 -3
- package/dist/cjs/offers/index.d.ts.map +1 -1
- package/dist/cjs/offers/index.js +0 -1
- package/dist/cjs/offers/index.js.map +1 -1
- package/dist/cjs/offers/interface.d.ts +0 -1
- package/dist/cjs/offers/interface.d.ts.map +1 -1
- package/dist/cjs/offers/interface.js +12 -6
- package/dist/cjs/offers/interface.js.map +1 -1
- package/dist/cjs/offers/subgraph.d.ts.map +1 -1
- package/dist/cjs/offers/subgraph.js.map +1 -1
- package/dist/cjs/orchestration/interface.d.ts.map +1 -1
- package/dist/cjs/orchestration/interface.js +2 -9
- package/dist/cjs/orchestration/interface.js.map +1 -1
- package/dist/cjs/subgraph.d.ts +15 -4391
- package/dist/cjs/subgraph.d.ts.map +1 -1
- package/dist/cjs/subgraph.js +169 -319
- package/dist/cjs/subgraph.js.map +1 -1
- package/dist/cjs/utils/graphql.d.ts +0 -16
- package/dist/cjs/utils/graphql.d.ts.map +1 -1
- package/dist/esm/accounts/index.d.ts +11 -2
- package/dist/esm/accounts/index.d.ts.map +1 -1
- package/dist/esm/accounts/index.js.map +1 -1
- package/dist/esm/accounts/interface.d.ts +2 -5
- package/dist/esm/accounts/interface.d.ts.map +1 -1
- package/dist/esm/accounts/interface.js +8 -17
- package/dist/esm/accounts/interface.js.map +1 -1
- package/dist/esm/core-sdk.d.ts +5 -42
- package/dist/esm/core-sdk.d.ts.map +1 -1
- package/dist/esm/core-sdk.js +11 -133
- package/dist/esm/core-sdk.js.map +1 -1
- package/dist/esm/exchanges/handler.d.ts.map +1 -1
- package/dist/esm/exchanges/handler.js +0 -1
- package/dist/esm/exchanges/handler.js.map +1 -1
- package/dist/esm/meta-tx/handler.d.ts +14 -0
- package/dist/esm/meta-tx/handler.d.ts.map +1 -1
- package/dist/esm/meta-tx/handler.js +58 -19
- package/dist/esm/meta-tx/handler.js.map +1 -1
- package/dist/esm/offers/getOfferStatus.d.ts +2 -2
- package/dist/esm/offers/getOfferStatus.d.ts.map +1 -1
- package/dist/esm/offers/getOfferStatus.js.map +1 -1
- package/dist/esm/offers/index.d.ts +33 -3
- package/dist/esm/offers/index.d.ts.map +1 -1
- package/dist/esm/offers/index.js +0 -1
- package/dist/esm/offers/index.js.map +1 -1
- package/dist/esm/offers/interface.d.ts +0 -1
- package/dist/esm/offers/interface.d.ts.map +1 -1
- package/dist/esm/offers/interface.js +12 -6
- package/dist/esm/offers/interface.js.map +1 -1
- package/dist/esm/offers/subgraph.d.ts.map +1 -1
- package/dist/esm/offers/subgraph.js.map +1 -1
- package/dist/esm/orchestration/interface.d.ts.map +1 -1
- package/dist/esm/orchestration/interface.js +2 -9
- package/dist/esm/orchestration/interface.js.map +1 -1
- package/dist/esm/subgraph.d.ts +15 -4391
- package/dist/esm/subgraph.d.ts.map +1 -1
- package/dist/esm/subgraph.js +167 -317
- package/dist/esm/subgraph.js.map +1 -1
- package/dist/esm/utils/graphql.d.ts +0 -16
- package/dist/esm/utils/graphql.d.ts.map +1 -1
- package/package.json +4 -7
- package/src/accounts/index.ts +1 -3
- package/src/accounts/interface.ts +11 -22
- package/src/accounts/queries.graphql +0 -3
- package/src/core-sdk.ts +16 -209
- package/src/exchanges/handler.ts +0 -1
- package/src/meta-tx/handler.ts +74 -20
- package/src/metadata/product-v1.graphql +0 -3
- package/src/offers/getOfferStatus.ts +2 -2
- package/src/offers/index.ts +1 -4
- package/src/offers/interface.ts +16 -9
- package/src/offers/queries.graphql +0 -31
- package/src/offers/subgraph.ts +1 -0
- package/src/orchestration/interface.ts +2 -9
- package/src/subgraph.ts +262 -4728
- package/dist/cjs/disputes/handler.d.ts +0 -72
- package/dist/cjs/disputes/handler.d.ts.map +0 -1
- package/dist/cjs/disputes/handler.js +0 -128
- package/dist/cjs/disputes/handler.js.map +0 -1
- package/dist/cjs/disputes/index.d.ts +0 -4
- package/dist/cjs/disputes/index.d.ts.map +0 -1
- package/dist/cjs/disputes/index.js +0 -30
- package/dist/cjs/disputes/index.js.map +0 -1
- package/dist/cjs/disputes/interface.d.ts +0 -30
- package/dist/cjs/disputes/interface.d.ts.map +0 -1
- package/dist/cjs/disputes/interface.js +0 -74
- package/dist/cjs/disputes/interface.js.map +0 -1
- package/dist/cjs/disputes/subgraph.d.ts +0 -6
- package/dist/cjs/disputes/subgraph.d.ts.map +0 -1
- package/dist/cjs/disputes/subgraph.js +0 -30
- package/dist/cjs/disputes/subgraph.js.map +0 -1
- package/dist/cjs/offers/renderContractualAgreement.d.ts +0 -42
- package/dist/cjs/offers/renderContractualAgreement.d.ts.map +0 -1
- package/dist/cjs/offers/renderContractualAgreement.js +0 -156
- package/dist/cjs/offers/renderContractualAgreement.js.map +0 -1
- package/dist/cjs/utils/signature.d.ts +0 -21
- package/dist/cjs/utils/signature.d.ts.map +0 -1
- package/dist/cjs/utils/signature.js +0 -60
- package/dist/cjs/utils/signature.js.map +0 -1
- package/dist/cjs/utils/tokenInfoManager.d.ts +0 -19
- package/dist/cjs/utils/tokenInfoManager.d.ts.map +0 -1
- package/dist/cjs/utils/tokenInfoManager.js +0 -97
- package/dist/cjs/utils/tokenInfoManager.js.map +0 -1
- package/dist/esm/disputes/handler.d.ts +0 -72
- package/dist/esm/disputes/handler.d.ts.map +0 -1
- package/dist/esm/disputes/handler.js +0 -83
- package/dist/esm/disputes/handler.js.map +0 -1
- package/dist/esm/disputes/index.d.ts +0 -4
- package/dist/esm/disputes/index.d.ts.map +0 -1
- package/dist/esm/disputes/index.js +0 -4
- package/dist/esm/disputes/index.js.map +0 -1
- package/dist/esm/disputes/interface.d.ts +0 -30
- package/dist/esm/disputes/interface.d.ts.map +0 -1
- package/dist/esm/disputes/interface.js +0 -61
- package/dist/esm/disputes/interface.js.map +0 -1
- package/dist/esm/disputes/subgraph.d.ts +0 -6
- package/dist/esm/disputes/subgraph.d.ts.map +0 -1
- package/dist/esm/disputes/subgraph.js +0 -15
- package/dist/esm/disputes/subgraph.js.map +0 -1
- package/dist/esm/offers/renderContractualAgreement.d.ts +0 -42
- package/dist/esm/offers/renderContractualAgreement.d.ts.map +0 -1
- package/dist/esm/offers/renderContractualAgreement.js +0 -132
- package/dist/esm/offers/renderContractualAgreement.js.map +0 -1
- package/dist/esm/utils/signature.d.ts +0 -21
- package/dist/esm/utils/signature.d.ts.map +0 -1
- package/dist/esm/utils/signature.js +0 -47
- package/dist/esm/utils/signature.js.map +0 -1
- package/dist/esm/utils/tokenInfoManager.d.ts +0 -19
- package/dist/esm/utils/tokenInfoManager.d.ts.map +0 -1
- package/dist/esm/utils/tokenInfoManager.js +0 -83
- package/dist/esm/utils/tokenInfoManager.js.map +0 -1
- package/src/disputes/handler.ts +0 -163
- package/src/disputes/index.ts +0 -3
- package/src/disputes/interface.ts +0 -90
- package/src/disputes/queries.graphql +0 -56
- package/src/disputes/subgraph.ts +0 -34
- package/src/offers/renderContractualAgreement.ts +0 -206
- package/src/utils/signature.ts +0 -65
- package/src/utils/tokenInfoManager.ts +0 -97
|
@@ -1,206 +0,0 @@
|
|
|
1
|
-
import * as yup from "yup";
|
|
2
|
-
import { ITokenInfo } from "./../utils/tokenInfoManager";
|
|
3
|
-
import { BigNumber, BigNumberish } from "@ethersproject/bignumber";
|
|
4
|
-
import { utils } from "@bosonprotocol/common";
|
|
5
|
-
import Mustache from "mustache";
|
|
6
|
-
import { formatUnits } from "@ethersproject/units";
|
|
7
|
-
import { productV1 } from "@bosonprotocol/metadata";
|
|
8
|
-
|
|
9
|
-
import { CreateOfferArgs } from "./types";
|
|
10
|
-
import { OfferFieldsFragment, MetadataType } from "../subgraph";
|
|
11
|
-
|
|
12
|
-
export type TemplateRenderingData = CreateOfferArgs & {
|
|
13
|
-
priceValue: string; // Convert in decimals value
|
|
14
|
-
sellerDepositValue: string; // Convert in decimals value
|
|
15
|
-
buyerCancelPenaltyValue: string; // Convert in decimals value
|
|
16
|
-
agentFeeValue: string; // Convert in decimals value
|
|
17
|
-
exchangeTokenSymbol: string;
|
|
18
|
-
sellerContactMethod: string;
|
|
19
|
-
disputeResolverContactMethod: string;
|
|
20
|
-
toISOString: () => void;
|
|
21
|
-
msecToDay: () => void;
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
export class InvalidOfferDataError extends Error {
|
|
25
|
-
constructor(public missingProperties: string[]) {
|
|
26
|
-
super(
|
|
27
|
-
`InvalidOfferData - missing properties: [${missingProperties.join(",")}]`
|
|
28
|
-
);
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
export const baseOfferDataSchema: yup.SchemaOf<BaseOfferData> = yup.object({
|
|
33
|
-
price: yup.mixed().required(),
|
|
34
|
-
sellerDeposit: yup.mixed().required(),
|
|
35
|
-
agentId: yup.mixed().required(),
|
|
36
|
-
buyerCancelPenalty: yup.mixed().required(),
|
|
37
|
-
quantityAvailable: yup.mixed().required(),
|
|
38
|
-
validFromDateInMS: yup.mixed().required(),
|
|
39
|
-
validUntilDateInMS: yup.mixed().required(),
|
|
40
|
-
voucherRedeemableFromDateInMS: yup.mixed().required(),
|
|
41
|
-
voucherRedeemableUntilDateInMS: yup.mixed().required(),
|
|
42
|
-
fulfillmentPeriodDurationInMS: yup.mixed().required(),
|
|
43
|
-
resolutionPeriodDurationInMS: yup.mixed().required(),
|
|
44
|
-
exchangeToken: yup.string().required(),
|
|
45
|
-
disputeResolverId: yup.mixed().required(),
|
|
46
|
-
metadataUri: yup.string().required(),
|
|
47
|
-
metadataHash: yup.string().required()
|
|
48
|
-
});
|
|
49
|
-
|
|
50
|
-
export type BaseOfferData = {
|
|
51
|
-
price: BigNumberish;
|
|
52
|
-
sellerDeposit: BigNumberish;
|
|
53
|
-
agentId: BigNumberish;
|
|
54
|
-
buyerCancelPenalty: BigNumberish;
|
|
55
|
-
quantityAvailable: BigNumberish;
|
|
56
|
-
validFromDateInMS: BigNumberish;
|
|
57
|
-
validUntilDateInMS: BigNumberish;
|
|
58
|
-
voucherRedeemableFromDateInMS: BigNumberish;
|
|
59
|
-
voucherRedeemableUntilDateInMS: BigNumberish;
|
|
60
|
-
fulfillmentPeriodDurationInMS: BigNumberish;
|
|
61
|
-
resolutionPeriodDurationInMS: BigNumberish;
|
|
62
|
-
exchangeToken: string;
|
|
63
|
-
disputeResolverId: BigNumberish;
|
|
64
|
-
metadataUri: string;
|
|
65
|
-
metadataHash: string;
|
|
66
|
-
};
|
|
67
|
-
|
|
68
|
-
function checkOfferDataIsValid(
|
|
69
|
-
offerData: unknown,
|
|
70
|
-
throwIfInvalid = false
|
|
71
|
-
): boolean {
|
|
72
|
-
if (offerData === undefined || offerData === null) {
|
|
73
|
-
throw new Error("InvalidOfferData - undefined");
|
|
74
|
-
}
|
|
75
|
-
if (typeof offerData !== "object") {
|
|
76
|
-
throw new Error("InvalidOfferData - expecting an object");
|
|
77
|
-
}
|
|
78
|
-
try {
|
|
79
|
-
baseOfferDataSchema.validateSync(offerData, { abortEarly: false });
|
|
80
|
-
} catch (e) {
|
|
81
|
-
const missingProperties = [];
|
|
82
|
-
const getMissingProp = (error) => {
|
|
83
|
-
return error.match(/(.*) is a required field/)[1] || error;
|
|
84
|
-
};
|
|
85
|
-
if (throwIfInvalid) {
|
|
86
|
-
if (e.errors) {
|
|
87
|
-
e.errors.forEach((error: string) => {
|
|
88
|
-
missingProperties.push(getMissingProp(error));
|
|
89
|
-
});
|
|
90
|
-
} else {
|
|
91
|
-
missingProperties.push(getMissingProp(e));
|
|
92
|
-
}
|
|
93
|
-
throw new InvalidOfferDataError(missingProperties);
|
|
94
|
-
}
|
|
95
|
-
return false;
|
|
96
|
-
}
|
|
97
|
-
return true;
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
function convertExistingOfferData(offerDataSubGraph: OfferFieldsFragment): {
|
|
101
|
-
offerData: CreateOfferArgs;
|
|
102
|
-
tokenInfo: ITokenInfo;
|
|
103
|
-
} {
|
|
104
|
-
return {
|
|
105
|
-
offerData: {
|
|
106
|
-
...offerDataSubGraph,
|
|
107
|
-
validFromDateInMS: offerDataSubGraph.validFromDate,
|
|
108
|
-
validUntilDateInMS: offerDataSubGraph.validUntilDate,
|
|
109
|
-
voucherRedeemableFromDateInMS:
|
|
110
|
-
offerDataSubGraph.voucherRedeemableFromDate,
|
|
111
|
-
voucherRedeemableUntilDateInMS:
|
|
112
|
-
offerDataSubGraph.voucherRedeemableUntilDate,
|
|
113
|
-
fulfillmentPeriodDurationInMS:
|
|
114
|
-
offerDataSubGraph.fulfillmentPeriodDuration,
|
|
115
|
-
resolutionPeriodDurationInMS: offerDataSubGraph.resolutionPeriodDuration,
|
|
116
|
-
exchangeToken: offerDataSubGraph.exchangeToken.address
|
|
117
|
-
},
|
|
118
|
-
tokenInfo: {
|
|
119
|
-
...offerDataSubGraph.exchangeToken,
|
|
120
|
-
decimals: parseInt(offerDataSubGraph.exchangeToken.decimals)
|
|
121
|
-
}
|
|
122
|
-
};
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
export async function prepareRenderingData(
|
|
126
|
-
offerData: CreateOfferArgs,
|
|
127
|
-
tokenInfo: ITokenInfo
|
|
128
|
-
): Promise<TemplateRenderingData> {
|
|
129
|
-
return {
|
|
130
|
-
...offerData,
|
|
131
|
-
priceValue: formatUnits(offerData.price, tokenInfo.decimals),
|
|
132
|
-
exchangeTokenSymbol: tokenInfo.symbol,
|
|
133
|
-
sellerDepositValue: formatUnits(
|
|
134
|
-
offerData.sellerDeposit,
|
|
135
|
-
tokenInfo.decimals
|
|
136
|
-
),
|
|
137
|
-
agentFeeValue: "0", // TODO: get the agentFee of the specified offerData.agentId
|
|
138
|
-
buyerCancelPenaltyValue: formatUnits(
|
|
139
|
-
offerData.buyerCancelPenalty,
|
|
140
|
-
tokenInfo.decimals
|
|
141
|
-
),
|
|
142
|
-
sellerContactMethod: "TBD", // TODO: what is the sellerContactMethod?
|
|
143
|
-
disputeResolverContactMethod: "TBD", // TODO: what is the disputeResolverContactMethod?
|
|
144
|
-
toISOString: function () {
|
|
145
|
-
return function (num, render) {
|
|
146
|
-
return new Date(parseInt(render(num))).toISOString();
|
|
147
|
-
};
|
|
148
|
-
},
|
|
149
|
-
msecToDay: function () {
|
|
150
|
-
return function (num, render) {
|
|
151
|
-
return BigNumber.from(render(num))
|
|
152
|
-
.div(utils.timestamp.MSEC_PER_DAY)
|
|
153
|
-
.toString();
|
|
154
|
-
};
|
|
155
|
-
}
|
|
156
|
-
};
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
// inject a template + all offer details
|
|
160
|
-
export async function renderContractualAgreement(
|
|
161
|
-
template: string,
|
|
162
|
-
offerData: CreateOfferArgs,
|
|
163
|
-
tokenInfo: ITokenInfo
|
|
164
|
-
): Promise<string> {
|
|
165
|
-
// Check the passed offerData is matching the required type
|
|
166
|
-
checkOfferDataIsValid(offerData, true);
|
|
167
|
-
const preparedData = await prepareRenderingData(offerData, tokenInfo);
|
|
168
|
-
return Mustache.render(template, preparedData);
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
export async function renderContractualAgreementForOffer(
|
|
172
|
-
existingOfferData: OfferFieldsFragment
|
|
173
|
-
): Promise<string> {
|
|
174
|
-
if (!existingOfferData) {
|
|
175
|
-
throw new Error(`offerData is undefined`);
|
|
176
|
-
}
|
|
177
|
-
if (!existingOfferData.metadata) {
|
|
178
|
-
throw new Error(`Offer Metadata is undefined`);
|
|
179
|
-
}
|
|
180
|
-
if (existingOfferData.metadata.type !== MetadataType.ProductV1) {
|
|
181
|
-
throw new Error(
|
|
182
|
-
`Invalid Offer Metadata: Type is not supported: '${existingOfferData.metadata.type}'`
|
|
183
|
-
);
|
|
184
|
-
}
|
|
185
|
-
if (
|
|
186
|
-
!(existingOfferData.metadata as productV1.ProductV1Metadata).exchangePolicy
|
|
187
|
-
) {
|
|
188
|
-
throw new Error(`Invalid Offer Metadata: exchangePolicy is not defined`);
|
|
189
|
-
}
|
|
190
|
-
if (
|
|
191
|
-
!(existingOfferData.metadata as productV1.ProductV1Metadata).exchangePolicy
|
|
192
|
-
.template
|
|
193
|
-
) {
|
|
194
|
-
throw new Error(
|
|
195
|
-
`Invalid Offer Metadata: exchangePolicy.template is not defined`
|
|
196
|
-
);
|
|
197
|
-
}
|
|
198
|
-
const template = (existingOfferData.metadata as productV1.ProductV1Metadata)
|
|
199
|
-
.exchangePolicy.template;
|
|
200
|
-
const convertedOfferArgs = convertExistingOfferData(existingOfferData);
|
|
201
|
-
return renderContractualAgreement(
|
|
202
|
-
template,
|
|
203
|
-
convertedOfferArgs.offerData,
|
|
204
|
-
convertedOfferArgs.tokenInfo
|
|
205
|
-
);
|
|
206
|
-
}
|
package/src/utils/signature.ts
DELETED
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import { Web3LibAdapter } from "@bosonprotocol/common";
|
|
2
|
-
import { isHexString, hexZeroPad } from "@ethersproject/bytes";
|
|
3
|
-
import { BigNumber } from "@ethersproject/bignumber";
|
|
4
|
-
|
|
5
|
-
type SignatureArgs = {
|
|
6
|
-
web3Lib: Web3LibAdapter;
|
|
7
|
-
verifyingContractAddress: string;
|
|
8
|
-
chainId: number;
|
|
9
|
-
customSignatureType?: Record<string, unknown>;
|
|
10
|
-
primaryType: string;
|
|
11
|
-
message: Record<string, unknown>;
|
|
12
|
-
};
|
|
13
|
-
|
|
14
|
-
export async function prepareDataSignatureParameters(args: SignatureArgs) {
|
|
15
|
-
const domainType = [
|
|
16
|
-
{ name: "name", type: "string" },
|
|
17
|
-
{ name: "version", type: "string" },
|
|
18
|
-
{ name: "verifyingContract", type: "address" },
|
|
19
|
-
{ name: "salt", type: "bytes32" }
|
|
20
|
-
];
|
|
21
|
-
|
|
22
|
-
const domainData = {
|
|
23
|
-
name: "BosonProtocolDiamond",
|
|
24
|
-
version: "V1",
|
|
25
|
-
verifyingContract: args.verifyingContractAddress,
|
|
26
|
-
salt: hexZeroPad(BigNumber.from(args.chainId).toHexString(), 32)
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
const signatureTypes = {
|
|
30
|
-
EIP712Domain: domainType,
|
|
31
|
-
...args.customSignatureType
|
|
32
|
-
};
|
|
33
|
-
|
|
34
|
-
const dataToSign = JSON.stringify({
|
|
35
|
-
types: signatureTypes,
|
|
36
|
-
domain: domainData,
|
|
37
|
-
primaryType: args.primaryType,
|
|
38
|
-
message: args.message
|
|
39
|
-
});
|
|
40
|
-
|
|
41
|
-
const signer = await args.web3Lib.getSignerAddress();
|
|
42
|
-
const signature = await args.web3Lib.send("eth_signTypedData_v4", [
|
|
43
|
-
signer,
|
|
44
|
-
dataToSign
|
|
45
|
-
]);
|
|
46
|
-
|
|
47
|
-
return getSignatureParameters(signature);
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
export function getSignatureParameters(signature: string) {
|
|
51
|
-
if (!isHexString(signature)) {
|
|
52
|
-
throw new Error(`Value "${signature}" is not a valid hex string`);
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
signature = signature.substring(2);
|
|
56
|
-
const r = "0x" + signature.substring(0, 64);
|
|
57
|
-
const s = "0x" + signature.substring(64, 128);
|
|
58
|
-
const v = parseInt(signature.substring(128, 130), 16);
|
|
59
|
-
|
|
60
|
-
return {
|
|
61
|
-
r,
|
|
62
|
-
s,
|
|
63
|
-
v
|
|
64
|
-
};
|
|
65
|
-
}
|
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
import { Web3LibAdapter } from "@bosonprotocol/common";
|
|
2
|
-
import { AddressZero } from "@ethersproject/constants";
|
|
3
|
-
import { getDecimals, getName, getSymbol } from "../erc20/handler";
|
|
4
|
-
|
|
5
|
-
export interface ITokenInfo {
|
|
6
|
-
name: string;
|
|
7
|
-
decimals: number;
|
|
8
|
-
symbol: string;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
export interface ITokenInfoManager {
|
|
12
|
-
getExchangeTokenInfo: (tokenAddress: string) => Promise<ITokenInfo>;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
export const NATIVE_TOKENS: { [key: number]: ITokenInfo } = {
|
|
16
|
-
1: {
|
|
17
|
-
// Ethereum Mainnet
|
|
18
|
-
name: "Ether",
|
|
19
|
-
decimals: 18,
|
|
20
|
-
symbol: "ETH"
|
|
21
|
-
},
|
|
22
|
-
3: {
|
|
23
|
-
// Ethereum Ropsten
|
|
24
|
-
name: "Ether",
|
|
25
|
-
decimals: 18,
|
|
26
|
-
symbol: "ETH"
|
|
27
|
-
},
|
|
28
|
-
4: {
|
|
29
|
-
// Ethereum Rinkeby
|
|
30
|
-
name: "Ether",
|
|
31
|
-
decimals: 18,
|
|
32
|
-
symbol: "ETH"
|
|
33
|
-
},
|
|
34
|
-
5: {
|
|
35
|
-
// Ethereum Goerli
|
|
36
|
-
name: "Ether",
|
|
37
|
-
decimals: 18,
|
|
38
|
-
symbol: "ETH"
|
|
39
|
-
},
|
|
40
|
-
137: {
|
|
41
|
-
// Polygon Mainnet
|
|
42
|
-
name: "MATIC",
|
|
43
|
-
decimals: 18,
|
|
44
|
-
symbol: "MATIC"
|
|
45
|
-
},
|
|
46
|
-
80001: {
|
|
47
|
-
// Polygon Mumbai
|
|
48
|
-
name: "MATIC",
|
|
49
|
-
decimals: 18,
|
|
50
|
-
symbol: "MATIC"
|
|
51
|
-
},
|
|
52
|
-
1234: {
|
|
53
|
-
// Private Node
|
|
54
|
-
name: "Ether",
|
|
55
|
-
decimals: 18,
|
|
56
|
-
symbol: "ETH"
|
|
57
|
-
},
|
|
58
|
-
31337: {
|
|
59
|
-
// Local Hardhat
|
|
60
|
-
name: "Ether",
|
|
61
|
-
decimals: 18,
|
|
62
|
-
symbol: "ETH"
|
|
63
|
-
}
|
|
64
|
-
};
|
|
65
|
-
|
|
66
|
-
export class TokenInfoManager implements ITokenInfoManager {
|
|
67
|
-
private _tokenInfos = new Map<string, ITokenInfo>();
|
|
68
|
-
private _web3Lib: Web3LibAdapter;
|
|
69
|
-
|
|
70
|
-
public constructor(chainId: number, web3Lib: Web3LibAdapter) {
|
|
71
|
-
if (!NATIVE_TOKENS[chainId]) {
|
|
72
|
-
throw new Error(`Unexpected chainId value '${chainId}'`);
|
|
73
|
-
}
|
|
74
|
-
this._tokenInfos.set(AddressZero, NATIVE_TOKENS[chainId]);
|
|
75
|
-
this._web3Lib = web3Lib;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
public async getExchangeTokenInfo(tokenAddress: string): Promise<ITokenInfo> {
|
|
79
|
-
if (!this._tokenInfos.has(tokenAddress.toLowerCase())) {
|
|
80
|
-
const args = {
|
|
81
|
-
web3Lib: this._web3Lib,
|
|
82
|
-
contractAddress: tokenAddress
|
|
83
|
-
};
|
|
84
|
-
const [decimals, name, symbol] = await Promise.all([
|
|
85
|
-
getDecimals(args),
|
|
86
|
-
getName(args),
|
|
87
|
-
getSymbol(args)
|
|
88
|
-
]);
|
|
89
|
-
this._tokenInfos.set(tokenAddress.toLowerCase(), {
|
|
90
|
-
decimals,
|
|
91
|
-
name,
|
|
92
|
-
symbol
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
|
-
return this._tokenInfos.get(tokenAddress.toLowerCase());
|
|
96
|
-
}
|
|
97
|
-
}
|