@bosonprotocol/core-sdk 1.23.0-alpha.17 → 1.23.0-alpha.18
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/mixin.d.ts +194 -0
- package/dist/cjs/accounts/mixin.d.ts.map +1 -0
- package/dist/cjs/accounts/mixin.js +426 -0
- package/dist/cjs/accounts/mixin.js.map +1 -0
- package/dist/cjs/core-sdk.d.ts +16 -818
- package/dist/cjs/core-sdk.d.ts.map +1 -1
- package/dist/cjs/core-sdk.js +26 -1579
- package/dist/cjs/core-sdk.js.map +1 -1
- package/dist/cjs/disputes/mixin.d.ts +113 -0
- package/dist/cjs/disputes/mixin.d.ts.map +1 -0
- package/dist/cjs/disputes/mixin.js +203 -0
- package/dist/cjs/disputes/mixin.js.map +1 -0
- package/dist/cjs/event-logs/mixin.d.ts +11 -0
- package/dist/cjs/event-logs/mixin.d.ts.map +1 -0
- package/dist/cjs/event-logs/mixin.js +28 -0
- package/dist/cjs/event-logs/mixin.js.map +1 -0
- package/dist/cjs/exchanges/mixin.d.ts +77 -0
- package/dist/cjs/exchanges/mixin.d.ts.map +1 -0
- package/dist/cjs/exchanges/mixin.js +172 -0
- package/dist/cjs/exchanges/mixin.js.map +1 -0
- package/dist/cjs/funds/mixin.d.ts +42 -0
- package/dist/cjs/funds/mixin.d.ts.map +1 -0
- package/dist/cjs/funds/mixin.js +95 -0
- package/dist/cjs/funds/mixin.js.map +1 -0
- package/dist/cjs/groups/mixin.d.ts +14 -0
- package/dist/cjs/groups/mixin.d.ts.map +1 -0
- package/dist/cjs/groups/mixin.js +33 -0
- package/dist/cjs/groups/mixin.js.map +1 -0
- package/dist/cjs/meta-tx/mixin.d.ts +176 -0
- package/dist/cjs/meta-tx/mixin.d.ts.map +1 -0
- package/dist/cjs/meta-tx/mixin.js +296 -0
- package/dist/cjs/meta-tx/mixin.js.map +1 -0
- package/dist/cjs/metadata/mixin.d.ts +40 -0
- package/dist/cjs/metadata/mixin.d.ts.map +1 -0
- package/dist/cjs/metadata/mixin.js +102 -0
- package/dist/cjs/metadata/mixin.js.map +1 -0
- package/dist/cjs/mixins/base-core-sdk.d.ts +41 -0
- package/dist/cjs/mixins/base-core-sdk.d.ts.map +1 -0
- package/dist/cjs/mixins/base-core-sdk.js +51 -0
- package/dist/cjs/mixins/base-core-sdk.js.map +1 -0
- package/dist/cjs/native-meta-tx/mixin.d.ts +35 -0
- package/dist/cjs/native-meta-tx/mixin.d.ts.map +1 -0
- package/dist/cjs/native-meta-tx/mixin.js +68 -0
- package/dist/cjs/native-meta-tx/mixin.js.map +1 -0
- package/dist/cjs/offers/mixin.d.ts +132 -0
- package/dist/cjs/offers/mixin.d.ts.map +1 -0
- package/dist/cjs/offers/mixin.js +292 -0
- package/dist/cjs/offers/mixin.js.map +1 -0
- package/dist/cjs/orchestration/mixin.d.ts +28 -0
- package/dist/cjs/orchestration/mixin.d.ts.map +1 -0
- package/dist/cjs/orchestration/mixin.js +59 -0
- package/dist/cjs/orchestration/mixin.js.map +1 -0
- package/dist/esm/accounts/mixin.d.ts +194 -0
- package/dist/esm/accounts/mixin.d.ts.map +1 -0
- package/dist/esm/accounts/mixin.js +342 -0
- package/dist/esm/accounts/mixin.js.map +1 -0
- package/dist/esm/core-sdk.d.ts +16 -818
- package/dist/esm/core-sdk.d.ts.map +1 -1
- package/dist/esm/core-sdk.js +27 -1483
- package/dist/esm/core-sdk.js.map +1 -1
- package/dist/esm/disputes/mixin.d.ts +113 -0
- package/dist/esm/disputes/mixin.d.ts.map +1 -0
- package/dist/esm/disputes/mixin.js +173 -0
- package/dist/esm/disputes/mixin.js.map +1 -0
- package/dist/esm/event-logs/mixin.d.ts +11 -0
- package/dist/esm/event-logs/mixin.d.ts.map +1 -0
- package/dist/esm/event-logs/mixin.js +13 -0
- package/dist/esm/event-logs/mixin.js.map +1 -0
- package/dist/esm/exchanges/mixin.d.ts +77 -0
- package/dist/esm/exchanges/mixin.d.ts.map +1 -0
- package/dist/esm/exchanges/mixin.js +141 -0
- package/dist/esm/exchanges/mixin.js.map +1 -0
- package/dist/esm/funds/mixin.d.ts +42 -0
- package/dist/esm/funds/mixin.d.ts.map +1 -0
- package/dist/esm/funds/mixin.js +72 -0
- package/dist/esm/funds/mixin.js.map +1 -0
- package/dist/esm/groups/mixin.d.ts +14 -0
- package/dist/esm/groups/mixin.d.ts.map +1 -0
- package/dist/esm/groups/mixin.js +18 -0
- package/dist/esm/groups/mixin.js.map +1 -0
- package/dist/esm/meta-tx/mixin.d.ts +176 -0
- package/dist/esm/meta-tx/mixin.d.ts.map +1 -0
- package/dist/esm/meta-tx/mixin.js +351 -0
- package/dist/esm/meta-tx/mixin.js.map +1 -0
- package/dist/esm/metadata/mixin.d.ts +40 -0
- package/dist/esm/metadata/mixin.d.ts.map +1 -0
- package/dist/esm/metadata/mixin.js +54 -0
- package/dist/esm/metadata/mixin.js.map +1 -0
- package/dist/esm/mixins/base-core-sdk.d.ts +41 -0
- package/dist/esm/mixins/base-core-sdk.d.ts.map +1 -0
- package/dist/esm/mixins/base-core-sdk.js +54 -0
- package/dist/esm/mixins/base-core-sdk.js.map +1 -0
- package/dist/esm/native-meta-tx/mixin.d.ts +35 -0
- package/dist/esm/native-meta-tx/mixin.d.ts.map +1 -0
- package/dist/esm/native-meta-tx/mixin.js +51 -0
- package/dist/esm/native-meta-tx/mixin.js.map +1 -0
- package/dist/esm/offers/mixin.d.ts +132 -0
- package/dist/esm/offers/mixin.d.ts.map +1 -0
- package/dist/esm/offers/mixin.js +232 -0
- package/dist/esm/offers/mixin.js.map +1 -0
- package/dist/esm/orchestration/mixin.d.ts +28 -0
- package/dist/esm/orchestration/mixin.d.ts.map +1 -0
- package/dist/esm/orchestration/mixin.js +42 -0
- package/dist/esm/orchestration/mixin.js.map +1 -0
- package/package.json +3 -3
- package/src/accounts/mixin.ts +484 -0
- package/src/core-sdk.ts +42 -2103
- package/src/disputes/mixin.ts +240 -0
- package/src/event-logs/mixin.ts +16 -0
- package/src/exchanges/mixin.ts +184 -0
- package/src/funds/mixin.ts +99 -0
- package/src/groups/mixin.ts +24 -0
- package/src/meta-tx/mixin.ts +515 -0
- package/src/metadata/mixin.ts +85 -0
- package/src/mixins/base-core-sdk.ts +96 -0
- package/src/native-meta-tx/mixin.ts +77 -0
- package/src/offers/mixin.ts +322 -0
- package/src/orchestration/mixin.ts +57 -0
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { MetaTxConfig, TransactionResponse } from "@bosonprotocol/common";
|
|
2
|
+
import { BigNumberish } from "@ethersproject/bignumber";
|
|
3
|
+
import { BytesLike } from "@ethersproject/bytes";
|
|
4
|
+
import { handler } from ".";
|
|
5
|
+
import { BaseCoreSDK } from "./../mixins/base-core-sdk";
|
|
6
|
+
|
|
7
|
+
export class NativeMetaTxMixin extends BaseCoreSDK {
|
|
8
|
+
/**
|
|
9
|
+
* Encodes and signs a native "token.approve()" meta transaction that can be relayed.
|
|
10
|
+
* @param exchangeToken - The address of the token contract.
|
|
11
|
+
* @param value - The value to be approved.
|
|
12
|
+
* @param overrides - Optionally specify a spender address (default is the protocol contract address).
|
|
13
|
+
* @returns Signature.
|
|
14
|
+
*/
|
|
15
|
+
public async signNativeMetaTxApproveExchangeToken(
|
|
16
|
+
exchangeToken: string,
|
|
17
|
+
value: BigNumberish,
|
|
18
|
+
overrides: Partial<{
|
|
19
|
+
spender: string;
|
|
20
|
+
}> = {}
|
|
21
|
+
) {
|
|
22
|
+
const user = await this._web3Lib.getSignerAddress();
|
|
23
|
+
return handler.signNativeMetaTxApproveExchangeToken({
|
|
24
|
+
web3Lib: this._web3Lib,
|
|
25
|
+
chainId: this._chainId,
|
|
26
|
+
user,
|
|
27
|
+
exchangeToken,
|
|
28
|
+
spender: overrides.spender || this._protocolDiamond,
|
|
29
|
+
value
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Relay a native meta transaction,
|
|
35
|
+
* @param metaTxParams - Required params for meta transaction.
|
|
36
|
+
* @param overrides - Optional overrides.
|
|
37
|
+
* @returns Transaction response.
|
|
38
|
+
*/
|
|
39
|
+
public async relayNativeMetaTransaction(
|
|
40
|
+
contractAddress: string,
|
|
41
|
+
metaTxParams: {
|
|
42
|
+
functionSignature: BytesLike;
|
|
43
|
+
sigR: BytesLike;
|
|
44
|
+
sigS: BytesLike;
|
|
45
|
+
sigV: BigNumberish;
|
|
46
|
+
},
|
|
47
|
+
overrides: Partial<{
|
|
48
|
+
userAddress: string;
|
|
49
|
+
metaTxConfig: Partial<Omit<MetaTxConfig, "apiIds"> & { apiId: string }>;
|
|
50
|
+
metaTransactionMethod: string;
|
|
51
|
+
}> = {}
|
|
52
|
+
): Promise<TransactionResponse> {
|
|
53
|
+
const { metaTxApiId, metaTxApiKey, metaTxRelayerUrl } =
|
|
54
|
+
this.assertAndGetMetaTxConfig({ ...overrides, contractAddress });
|
|
55
|
+
|
|
56
|
+
return handler.relayNativeMetaTransaction({
|
|
57
|
+
web3LibAdapter: this._web3Lib,
|
|
58
|
+
contractAddress,
|
|
59
|
+
chainId: this._chainId,
|
|
60
|
+
metaTx: {
|
|
61
|
+
config: {
|
|
62
|
+
relayerUrl: metaTxRelayerUrl,
|
|
63
|
+
apiId: metaTxApiId,
|
|
64
|
+
apiKey: metaTxApiKey
|
|
65
|
+
},
|
|
66
|
+
params: {
|
|
67
|
+
userAddress:
|
|
68
|
+
overrides.userAddress || (await this._web3Lib.getSignerAddress()),
|
|
69
|
+
functionSignature: metaTxParams.functionSignature,
|
|
70
|
+
sigR: metaTxParams.sigR,
|
|
71
|
+
sigS: metaTxParams.sigS,
|
|
72
|
+
sigV: metaTxParams.sigV
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
}
|
|
@@ -0,0 +1,322 @@
|
|
|
1
|
+
import { BaseCoreSDK } from "./../mixins/base-core-sdk";
|
|
2
|
+
import * as erc20 from "../erc20";
|
|
3
|
+
import * as subgraph from "../subgraph";
|
|
4
|
+
import * as offers from ".";
|
|
5
|
+
import * as accounts from "../accounts";
|
|
6
|
+
import * as orchestration from "../orchestration";
|
|
7
|
+
import * as groups from "../groups";
|
|
8
|
+
import { TransactionResponse, Log } from "@bosonprotocol/common";
|
|
9
|
+
import { BigNumberish } from "@ethersproject/bignumber";
|
|
10
|
+
import { getValueFromLogs, getValuesFromLogs } from "../utils/logs";
|
|
11
|
+
import { ITokenInfo, TokenInfoManager } from "../utils/tokenInfoManager";
|
|
12
|
+
|
|
13
|
+
export class OfferMixin extends BaseCoreSDK {
|
|
14
|
+
/* -------------------------------------------------------------------------- */
|
|
15
|
+
/* Offer related methods */
|
|
16
|
+
/* -------------------------------------------------------------------------- */
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Creates offer by calling the `OfferHandlerFacet` contract.
|
|
20
|
+
* This transaction only succeeds if there is an existing seller account for connected signer.
|
|
21
|
+
* @param offerToCreate - Offer arguments.
|
|
22
|
+
* @param overrides - Optional overrides.
|
|
23
|
+
* @returns Transaction response.
|
|
24
|
+
*/
|
|
25
|
+
public async createOffer(
|
|
26
|
+
offerToCreate: offers.CreateOfferArgs,
|
|
27
|
+
overrides: Partial<{
|
|
28
|
+
contractAddress: string;
|
|
29
|
+
}> = {}
|
|
30
|
+
): Promise<TransactionResponse> {
|
|
31
|
+
return offers.handler.createOffer({
|
|
32
|
+
offerToCreate,
|
|
33
|
+
web3Lib: this._web3Lib,
|
|
34
|
+
theGraphStorage: this._theGraphStorage,
|
|
35
|
+
metadataStorage: this._metadataStorage,
|
|
36
|
+
contractAddress: overrides.contractAddress || this._protocolDiamond
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Creates a batch of offers by calling the `OfferHandlerFacet` contract.
|
|
42
|
+
* This transaction only succeeds if there is an existing seller account for connected signer.
|
|
43
|
+
* @param offersToCreate - Offer arguments.
|
|
44
|
+
* @param overrides - Optional overrides.
|
|
45
|
+
* @returns Transaction response.
|
|
46
|
+
*/
|
|
47
|
+
public async createOfferBatch(
|
|
48
|
+
offersToCreate: offers.CreateOfferArgs[],
|
|
49
|
+
overrides: Partial<{
|
|
50
|
+
contractAddress: string;
|
|
51
|
+
}> = {}
|
|
52
|
+
): Promise<TransactionResponse> {
|
|
53
|
+
return offers.handler.createOfferBatch({
|
|
54
|
+
offersToCreate,
|
|
55
|
+
web3Lib: this._web3Lib,
|
|
56
|
+
theGraphStorage: this._theGraphStorage,
|
|
57
|
+
metadataStorage: this._metadataStorage,
|
|
58
|
+
contractAddress: overrides.contractAddress || this._protocolDiamond
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Utility method to retrieve the created `offerId` from logs after calling `createOffer`
|
|
64
|
+
* or `createOfferAndSeller`.
|
|
65
|
+
* @param logs - Logs to search in.
|
|
66
|
+
* @returns Created offer id.
|
|
67
|
+
*/
|
|
68
|
+
public getCreatedOfferIdFromLogs(logs: Log[]): string | null {
|
|
69
|
+
const offerId = getValueFromLogs({
|
|
70
|
+
iface: offers.iface.bosonOfferHandlerIface,
|
|
71
|
+
logs,
|
|
72
|
+
eventArgsKey: "offerId",
|
|
73
|
+
eventName: "OfferCreated"
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
return (
|
|
77
|
+
offerId ||
|
|
78
|
+
getValueFromLogs({
|
|
79
|
+
iface: orchestration.iface.bosonOrchestrationHandlerIface,
|
|
80
|
+
logs,
|
|
81
|
+
eventArgsKey: "offerId",
|
|
82
|
+
eventName: "OfferCreated"
|
|
83
|
+
})
|
|
84
|
+
);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Utility method to retrieve the created `offerIds` from logs after calling `createOfferBatch`
|
|
89
|
+
* @param logs - Logs to search in.
|
|
90
|
+
* @returns Array of created offerIds.
|
|
91
|
+
*/
|
|
92
|
+
public getCreatedOfferIdsFromLogs(logs: Log[]): string[] {
|
|
93
|
+
return getValuesFromLogs({
|
|
94
|
+
iface: offers.iface.bosonOfferHandlerIface,
|
|
95
|
+
logs,
|
|
96
|
+
eventArgsKey: "offerId",
|
|
97
|
+
eventName: "OfferCreated"
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* Utility method to retrieve the created `groupIds` from logs after calling `createGroup`
|
|
103
|
+
* @param logs - Logs to search in.
|
|
104
|
+
* @returns Array of group Ids.
|
|
105
|
+
*/
|
|
106
|
+
public getCreatedGroupIdsFromLogs(logs: Log[]): string[] {
|
|
107
|
+
return getValuesFromLogs({
|
|
108
|
+
iface: groups.iface.bosonGroupHandlerIface,
|
|
109
|
+
logs,
|
|
110
|
+
eventArgsKey: "groupId",
|
|
111
|
+
eventName: "GroupCreated"
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Utility method to retrieve the created `sellerId` from logs after calling `createSeller`
|
|
117
|
+
* or `createOfferAndSeller`.
|
|
118
|
+
* @param logs - Logs to search in.
|
|
119
|
+
* @returns Created offer id.
|
|
120
|
+
*/
|
|
121
|
+
public getCreatedSellerIdFromLogs(logs: Log[]): string | null {
|
|
122
|
+
const sellerId = getValueFromLogs({
|
|
123
|
+
iface: accounts.iface.bosonAccountHandlerIface,
|
|
124
|
+
logs,
|
|
125
|
+
eventArgsKey: "sellerId",
|
|
126
|
+
eventName: "SellerCreated"
|
|
127
|
+
});
|
|
128
|
+
|
|
129
|
+
return (
|
|
130
|
+
sellerId ||
|
|
131
|
+
getValueFromLogs({
|
|
132
|
+
iface: orchestration.iface.bosonOrchestrationHandlerIface,
|
|
133
|
+
logs,
|
|
134
|
+
eventArgsKey: "sellerId",
|
|
135
|
+
eventName: "SellerCreated"
|
|
136
|
+
})
|
|
137
|
+
);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* Voids an existing offer by calling the `OfferHandlerFacet` contract.
|
|
142
|
+
* This transaction only succeeds if the connected signer is the `operator`.
|
|
143
|
+
* @param offerId - ID of offer to void.
|
|
144
|
+
* @param overrides - Optional overrides.
|
|
145
|
+
* @returns Transaction response.
|
|
146
|
+
*/
|
|
147
|
+
public async voidOffer(
|
|
148
|
+
offerId: BigNumberish,
|
|
149
|
+
overrides: Partial<{
|
|
150
|
+
contractAddress: string;
|
|
151
|
+
}> = {}
|
|
152
|
+
): Promise<TransactionResponse> {
|
|
153
|
+
return offers.handler.voidOffer({
|
|
154
|
+
offerId,
|
|
155
|
+
web3Lib: this._web3Lib,
|
|
156
|
+
subgraphUrl: this._subgraphUrl,
|
|
157
|
+
contractAddress: overrides.contractAddress || this._protocolDiamond
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* Voids a batch of existing offers by calling the `OfferHandlerFacet` contract.
|
|
163
|
+
* This transaction only succeeds if the connected signer is the `operator` of all
|
|
164
|
+
* provided offers.
|
|
165
|
+
* @param offerIds - IDs of offers to void.
|
|
166
|
+
* @param overrides - Optional overrides.
|
|
167
|
+
* @returns Transaction response.
|
|
168
|
+
*/
|
|
169
|
+
public async voidOfferBatch(
|
|
170
|
+
offerIds: BigNumberish[],
|
|
171
|
+
overrides: Partial<{
|
|
172
|
+
contractAddress: string;
|
|
173
|
+
}> = {}
|
|
174
|
+
): Promise<TransactionResponse> {
|
|
175
|
+
return offers.handler.voidOfferBatch({
|
|
176
|
+
offerIds,
|
|
177
|
+
web3Lib: this._web3Lib,
|
|
178
|
+
subgraphUrl: this._subgraphUrl,
|
|
179
|
+
contractAddress: overrides.contractAddress || this._protocolDiamond
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
/**
|
|
184
|
+
* Returns offer from subgraph.
|
|
185
|
+
* @param offerId - ID of offer.
|
|
186
|
+
* @param queryVars - Optional query variables to skip, order or filter.
|
|
187
|
+
* @returns Offer entity from subgraph.
|
|
188
|
+
*/
|
|
189
|
+
public async getOfferById(
|
|
190
|
+
offerId: BigNumberish,
|
|
191
|
+
queryVars?: offers.subgraph.SingleOfferQueryVariables
|
|
192
|
+
): Promise<subgraph.OfferFieldsFragment> {
|
|
193
|
+
return offers.subgraph.getOfferById(this._subgraphUrl, offerId, queryVars);
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
* Returns offers from subgraph.
|
|
198
|
+
* @param queryVars - Optional query variables to skip, order or filter.
|
|
199
|
+
* @returns Offer entities from subgraph.
|
|
200
|
+
*/
|
|
201
|
+
public async getOffers(
|
|
202
|
+
queryVars?: subgraph.GetOffersQueryQueryVariables
|
|
203
|
+
): Promise<subgraph.OfferFieldsFragment[]> {
|
|
204
|
+
return offers.subgraph.getOffers(this._subgraphUrl, queryVars);
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
/**
|
|
208
|
+
* Renders contractual agreement for given offer.
|
|
209
|
+
* @param offerId - Id of offer to render agreement for.
|
|
210
|
+
* @returns Contractual agreement as string.
|
|
211
|
+
*/
|
|
212
|
+
public async renderContractualAgreementForOffer(
|
|
213
|
+
offerId: BigNumberish
|
|
214
|
+
): Promise<string> {
|
|
215
|
+
const offerData = await offers.subgraph.getOfferById(
|
|
216
|
+
this._subgraphUrl,
|
|
217
|
+
offerId
|
|
218
|
+
);
|
|
219
|
+
return offers.renderContractualAgreementForOffer(offerData);
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
/**
|
|
223
|
+
* Renders contractual agreement for given offer.
|
|
224
|
+
* @param template - Mustache syntax based template.
|
|
225
|
+
* @param offerData - Offer data.
|
|
226
|
+
* @returns Contractual agreement as string.
|
|
227
|
+
*/
|
|
228
|
+
public async renderContractualAgreement(
|
|
229
|
+
template: string,
|
|
230
|
+
offerData: offers.CreateOfferArgs,
|
|
231
|
+
offerMetadata: offers.AdditionalOfferMetadata
|
|
232
|
+
): Promise<string> {
|
|
233
|
+
const tokenInfo = await this.getExchangeTokenInfo(offerData.exchangeToken);
|
|
234
|
+
return offers.renderContractualAgreement(
|
|
235
|
+
template,
|
|
236
|
+
offerData,
|
|
237
|
+
offerMetadata,
|
|
238
|
+
tokenInfo
|
|
239
|
+
);
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
/* -------------------------------------------------------------------------- */
|
|
243
|
+
/* ERC20 / Exchange Token related methods */
|
|
244
|
+
/* -------------------------------------------------------------------------- */
|
|
245
|
+
|
|
246
|
+
/**
|
|
247
|
+
* Returns the current allowance of the given token by calling the contract.
|
|
248
|
+
* @param exchangeToken - Address of exchange token.
|
|
249
|
+
* @param overrides - Optional overrides.
|
|
250
|
+
* @returns Allowance for given signer.
|
|
251
|
+
*/
|
|
252
|
+
public async getExchangeTokenAllowance(
|
|
253
|
+
exchangeToken: string,
|
|
254
|
+
overrides: Partial<{
|
|
255
|
+
spender: string;
|
|
256
|
+
owner: string;
|
|
257
|
+
}> = {}
|
|
258
|
+
): Promise<string> {
|
|
259
|
+
return erc20.handler.getAllowance({
|
|
260
|
+
web3Lib: this._web3Lib,
|
|
261
|
+
contractAddress: exchangeToken,
|
|
262
|
+
spender: overrides.spender || this._protocolDiamond,
|
|
263
|
+
owner: overrides.owner || (await this._web3Lib.getSignerAddress())
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
/**
|
|
268
|
+
* Returns `name`, `decimals` and `symbol` of the given token by calling the contract.
|
|
269
|
+
* @param exchangeToken - Address exchange token.
|
|
270
|
+
* @returns Decimals, name and symbol.
|
|
271
|
+
*/
|
|
272
|
+
public async getExchangeTokenInfo(
|
|
273
|
+
exchangeToken: string
|
|
274
|
+
): Promise<ITokenInfo> {
|
|
275
|
+
if (this._tokenInfoManager === undefined) {
|
|
276
|
+
this._tokenInfoManager = new TokenInfoManager(
|
|
277
|
+
this._chainId,
|
|
278
|
+
this._web3Lib,
|
|
279
|
+
this._subgraphUrl
|
|
280
|
+
);
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
return this._tokenInfoManager.getExchangeTokenInfo(exchangeToken);
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
/**
|
|
287
|
+
* Approves the given amount for the main protocol contract.
|
|
288
|
+
* @param exchangeToken - Address of token to approve.
|
|
289
|
+
* @param value - Amount of allowance.
|
|
290
|
+
* @param overrides - Optional overrides.
|
|
291
|
+
* @returns Transaction response.
|
|
292
|
+
*/
|
|
293
|
+
public async approveExchangeToken(
|
|
294
|
+
exchangeToken: string,
|
|
295
|
+
value: BigNumberish,
|
|
296
|
+
overrides: Partial<{
|
|
297
|
+
spender: string;
|
|
298
|
+
}> = {}
|
|
299
|
+
): Promise<TransactionResponse> {
|
|
300
|
+
return erc20.handler.approve({
|
|
301
|
+
contractAddress: exchangeToken,
|
|
302
|
+
spender: overrides.spender || this._protocolDiamond,
|
|
303
|
+
value,
|
|
304
|
+
web3Lib: this._web3Lib
|
|
305
|
+
});
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
public async getProtocolAllowance(
|
|
309
|
+
exchangeToken: string,
|
|
310
|
+
overrides: Partial<{
|
|
311
|
+
spender: string;
|
|
312
|
+
owner: string;
|
|
313
|
+
}> = {}
|
|
314
|
+
): Promise<string> {
|
|
315
|
+
return erc20.handler.getAllowance({
|
|
316
|
+
contractAddress: exchangeToken,
|
|
317
|
+
owner: overrides.owner || (await this._web3Lib.getSignerAddress()),
|
|
318
|
+
spender: overrides.spender || this._protocolDiamond,
|
|
319
|
+
web3Lib: this._web3Lib
|
|
320
|
+
});
|
|
321
|
+
}
|
|
322
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { ConditionStruct, TransactionResponse } from "@bosonprotocol/common";
|
|
2
|
+
import { handler } from ".";
|
|
3
|
+
import { offers, accounts } from "..";
|
|
4
|
+
import { BaseCoreSDK } from "./../mixins/base-core-sdk";
|
|
5
|
+
|
|
6
|
+
export class OrchestrationMixin extends BaseCoreSDK {
|
|
7
|
+
/**
|
|
8
|
+
* Creates an offer with a specific conditions
|
|
9
|
+
* @param offerToCreate - Offer arguments.
|
|
10
|
+
* @param condition - contract condition applied to the offer
|
|
11
|
+
* @param overrides - Optional overrides.
|
|
12
|
+
* @returns Transaction response.
|
|
13
|
+
*/
|
|
14
|
+
public async createOfferWithCondition(
|
|
15
|
+
offerToCreate: offers.CreateOfferArgs,
|
|
16
|
+
condition: ConditionStruct,
|
|
17
|
+
overrides: Partial<{
|
|
18
|
+
contractAddress: string;
|
|
19
|
+
}> = {}
|
|
20
|
+
): Promise<TransactionResponse> {
|
|
21
|
+
return handler.createOfferWithCondition({
|
|
22
|
+
offerToCreate,
|
|
23
|
+
contractAddress: overrides.contractAddress || this._protocolDiamond,
|
|
24
|
+
web3Lib: this._web3Lib,
|
|
25
|
+
metadataStorage: this._metadataStorage,
|
|
26
|
+
theGraphStorage: this._theGraphStorage,
|
|
27
|
+
condition
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Creates a seller account and offer with a specific conditions
|
|
32
|
+
* This transaction only succeeds if there is no existing seller account for the connected signer.
|
|
33
|
+
* @param sellerToCreate - Addresses to set in the seller account.
|
|
34
|
+
* @param offerToCreate - Offer arguments.
|
|
35
|
+
* @param condition - contract condition applied to the offer
|
|
36
|
+
* @param overrides - Optional overrides.
|
|
37
|
+
* @returns Transaction response.
|
|
38
|
+
*/
|
|
39
|
+
public async createSellerAndOfferWithCondition(
|
|
40
|
+
sellerToCreate: accounts.CreateSellerArgs,
|
|
41
|
+
offerToCreate: offers.CreateOfferArgs,
|
|
42
|
+
condition: ConditionStruct,
|
|
43
|
+
overrides: Partial<{
|
|
44
|
+
contractAddress: string;
|
|
45
|
+
}> = {}
|
|
46
|
+
): Promise<TransactionResponse> {
|
|
47
|
+
return handler.createSellerAndOfferWithCondition({
|
|
48
|
+
sellerToCreate,
|
|
49
|
+
offerToCreate,
|
|
50
|
+
contractAddress: overrides.contractAddress || this._protocolDiamond,
|
|
51
|
+
web3Lib: this._web3Lib,
|
|
52
|
+
metadataStorage: this._metadataStorage,
|
|
53
|
+
theGraphStorage: this._theGraphStorage,
|
|
54
|
+
condition
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
}
|