@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.
Files changed (159) hide show
  1. package/dist/cjs/accounts/index.d.ts +11 -2
  2. package/dist/cjs/accounts/index.d.ts.map +1 -1
  3. package/dist/cjs/accounts/index.js.map +1 -1
  4. package/dist/cjs/accounts/interface.d.ts +2 -5
  5. package/dist/cjs/accounts/interface.d.ts.map +1 -1
  6. package/dist/cjs/accounts/interface.js +7 -27
  7. package/dist/cjs/accounts/interface.js.map +1 -1
  8. package/dist/cjs/core-sdk.d.ts +5 -42
  9. package/dist/cjs/core-sdk.d.ts.map +1 -1
  10. package/dist/cjs/core-sdk.js +11 -152
  11. package/dist/cjs/core-sdk.js.map +1 -1
  12. package/dist/cjs/exchanges/handler.d.ts.map +1 -1
  13. package/dist/cjs/exchanges/handler.js +0 -1
  14. package/dist/cjs/exchanges/handler.js.map +1 -1
  15. package/dist/cjs/meta-tx/handler.d.ts +14 -0
  16. package/dist/cjs/meta-tx/handler.d.ts.map +1 -1
  17. package/dist/cjs/meta-tx/handler.js +60 -14
  18. package/dist/cjs/meta-tx/handler.js.map +1 -1
  19. package/dist/cjs/offers/getOfferStatus.d.ts +2 -2
  20. package/dist/cjs/offers/getOfferStatus.d.ts.map +1 -1
  21. package/dist/cjs/offers/getOfferStatus.js.map +1 -1
  22. package/dist/cjs/offers/index.d.ts +33 -3
  23. package/dist/cjs/offers/index.d.ts.map +1 -1
  24. package/dist/cjs/offers/index.js +0 -1
  25. package/dist/cjs/offers/index.js.map +1 -1
  26. package/dist/cjs/offers/interface.d.ts +0 -1
  27. package/dist/cjs/offers/interface.d.ts.map +1 -1
  28. package/dist/cjs/offers/interface.js +12 -6
  29. package/dist/cjs/offers/interface.js.map +1 -1
  30. package/dist/cjs/offers/subgraph.d.ts.map +1 -1
  31. package/dist/cjs/offers/subgraph.js.map +1 -1
  32. package/dist/cjs/orchestration/interface.d.ts.map +1 -1
  33. package/dist/cjs/orchestration/interface.js +2 -9
  34. package/dist/cjs/orchestration/interface.js.map +1 -1
  35. package/dist/cjs/subgraph.d.ts +15 -4391
  36. package/dist/cjs/subgraph.d.ts.map +1 -1
  37. package/dist/cjs/subgraph.js +169 -319
  38. package/dist/cjs/subgraph.js.map +1 -1
  39. package/dist/cjs/utils/graphql.d.ts +0 -16
  40. package/dist/cjs/utils/graphql.d.ts.map +1 -1
  41. package/dist/esm/accounts/index.d.ts +11 -2
  42. package/dist/esm/accounts/index.d.ts.map +1 -1
  43. package/dist/esm/accounts/index.js.map +1 -1
  44. package/dist/esm/accounts/interface.d.ts +2 -5
  45. package/dist/esm/accounts/interface.d.ts.map +1 -1
  46. package/dist/esm/accounts/interface.js +8 -17
  47. package/dist/esm/accounts/interface.js.map +1 -1
  48. package/dist/esm/core-sdk.d.ts +5 -42
  49. package/dist/esm/core-sdk.d.ts.map +1 -1
  50. package/dist/esm/core-sdk.js +11 -133
  51. package/dist/esm/core-sdk.js.map +1 -1
  52. package/dist/esm/exchanges/handler.d.ts.map +1 -1
  53. package/dist/esm/exchanges/handler.js +0 -1
  54. package/dist/esm/exchanges/handler.js.map +1 -1
  55. package/dist/esm/meta-tx/handler.d.ts +14 -0
  56. package/dist/esm/meta-tx/handler.d.ts.map +1 -1
  57. package/dist/esm/meta-tx/handler.js +58 -19
  58. package/dist/esm/meta-tx/handler.js.map +1 -1
  59. package/dist/esm/offers/getOfferStatus.d.ts +2 -2
  60. package/dist/esm/offers/getOfferStatus.d.ts.map +1 -1
  61. package/dist/esm/offers/getOfferStatus.js.map +1 -1
  62. package/dist/esm/offers/index.d.ts +33 -3
  63. package/dist/esm/offers/index.d.ts.map +1 -1
  64. package/dist/esm/offers/index.js +0 -1
  65. package/dist/esm/offers/index.js.map +1 -1
  66. package/dist/esm/offers/interface.d.ts +0 -1
  67. package/dist/esm/offers/interface.d.ts.map +1 -1
  68. package/dist/esm/offers/interface.js +12 -6
  69. package/dist/esm/offers/interface.js.map +1 -1
  70. package/dist/esm/offers/subgraph.d.ts.map +1 -1
  71. package/dist/esm/offers/subgraph.js.map +1 -1
  72. package/dist/esm/orchestration/interface.d.ts.map +1 -1
  73. package/dist/esm/orchestration/interface.js +2 -9
  74. package/dist/esm/orchestration/interface.js.map +1 -1
  75. package/dist/esm/subgraph.d.ts +15 -4391
  76. package/dist/esm/subgraph.d.ts.map +1 -1
  77. package/dist/esm/subgraph.js +167 -317
  78. package/dist/esm/subgraph.js.map +1 -1
  79. package/dist/esm/utils/graphql.d.ts +0 -16
  80. package/dist/esm/utils/graphql.d.ts.map +1 -1
  81. package/package.json +4 -7
  82. package/src/accounts/index.ts +1 -3
  83. package/src/accounts/interface.ts +11 -22
  84. package/src/accounts/queries.graphql +0 -3
  85. package/src/core-sdk.ts +16 -209
  86. package/src/exchanges/handler.ts +0 -1
  87. package/src/meta-tx/handler.ts +74 -20
  88. package/src/metadata/product-v1.graphql +0 -3
  89. package/src/offers/getOfferStatus.ts +2 -2
  90. package/src/offers/index.ts +1 -4
  91. package/src/offers/interface.ts +16 -9
  92. package/src/offers/queries.graphql +0 -31
  93. package/src/offers/subgraph.ts +1 -0
  94. package/src/orchestration/interface.ts +2 -9
  95. package/src/subgraph.ts +262 -4728
  96. package/dist/cjs/disputes/handler.d.ts +0 -72
  97. package/dist/cjs/disputes/handler.d.ts.map +0 -1
  98. package/dist/cjs/disputes/handler.js +0 -128
  99. package/dist/cjs/disputes/handler.js.map +0 -1
  100. package/dist/cjs/disputes/index.d.ts +0 -4
  101. package/dist/cjs/disputes/index.d.ts.map +0 -1
  102. package/dist/cjs/disputes/index.js +0 -30
  103. package/dist/cjs/disputes/index.js.map +0 -1
  104. package/dist/cjs/disputes/interface.d.ts +0 -30
  105. package/dist/cjs/disputes/interface.d.ts.map +0 -1
  106. package/dist/cjs/disputes/interface.js +0 -74
  107. package/dist/cjs/disputes/interface.js.map +0 -1
  108. package/dist/cjs/disputes/subgraph.d.ts +0 -6
  109. package/dist/cjs/disputes/subgraph.d.ts.map +0 -1
  110. package/dist/cjs/disputes/subgraph.js +0 -30
  111. package/dist/cjs/disputes/subgraph.js.map +0 -1
  112. package/dist/cjs/offers/renderContractualAgreement.d.ts +0 -42
  113. package/dist/cjs/offers/renderContractualAgreement.d.ts.map +0 -1
  114. package/dist/cjs/offers/renderContractualAgreement.js +0 -156
  115. package/dist/cjs/offers/renderContractualAgreement.js.map +0 -1
  116. package/dist/cjs/utils/signature.d.ts +0 -21
  117. package/dist/cjs/utils/signature.d.ts.map +0 -1
  118. package/dist/cjs/utils/signature.js +0 -60
  119. package/dist/cjs/utils/signature.js.map +0 -1
  120. package/dist/cjs/utils/tokenInfoManager.d.ts +0 -19
  121. package/dist/cjs/utils/tokenInfoManager.d.ts.map +0 -1
  122. package/dist/cjs/utils/tokenInfoManager.js +0 -97
  123. package/dist/cjs/utils/tokenInfoManager.js.map +0 -1
  124. package/dist/esm/disputes/handler.d.ts +0 -72
  125. package/dist/esm/disputes/handler.d.ts.map +0 -1
  126. package/dist/esm/disputes/handler.js +0 -83
  127. package/dist/esm/disputes/handler.js.map +0 -1
  128. package/dist/esm/disputes/index.d.ts +0 -4
  129. package/dist/esm/disputes/index.d.ts.map +0 -1
  130. package/dist/esm/disputes/index.js +0 -4
  131. package/dist/esm/disputes/index.js.map +0 -1
  132. package/dist/esm/disputes/interface.d.ts +0 -30
  133. package/dist/esm/disputes/interface.d.ts.map +0 -1
  134. package/dist/esm/disputes/interface.js +0 -61
  135. package/dist/esm/disputes/interface.js.map +0 -1
  136. package/dist/esm/disputes/subgraph.d.ts +0 -6
  137. package/dist/esm/disputes/subgraph.d.ts.map +0 -1
  138. package/dist/esm/disputes/subgraph.js +0 -15
  139. package/dist/esm/disputes/subgraph.js.map +0 -1
  140. package/dist/esm/offers/renderContractualAgreement.d.ts +0 -42
  141. package/dist/esm/offers/renderContractualAgreement.d.ts.map +0 -1
  142. package/dist/esm/offers/renderContractualAgreement.js +0 -132
  143. package/dist/esm/offers/renderContractualAgreement.js.map +0 -1
  144. package/dist/esm/utils/signature.d.ts +0 -21
  145. package/dist/esm/utils/signature.d.ts.map +0 -1
  146. package/dist/esm/utils/signature.js +0 -47
  147. package/dist/esm/utils/signature.js.map +0 -1
  148. package/dist/esm/utils/tokenInfoManager.d.ts +0 -19
  149. package/dist/esm/utils/tokenInfoManager.d.ts.map +0 -1
  150. package/dist/esm/utils/tokenInfoManager.js +0 -83
  151. package/dist/esm/utils/tokenInfoManager.js.map +0 -1
  152. package/src/disputes/handler.ts +0 -163
  153. package/src/disputes/index.ts +0 -3
  154. package/src/disputes/interface.ts +0 -90
  155. package/src/disputes/queries.graphql +0 -56
  156. package/src/disputes/subgraph.ts +0 -34
  157. package/src/offers/renderContractualAgreement.ts +0 -206
  158. package/src/utils/signature.ts +0 -65
  159. 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
- }
@@ -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
- }