Skip to content

Commit 740a675

Browse files
authored
feat(extensions): add initial marketplace extensions (#2689)
1 parent 5f41412 commit 740a675

File tree

33 files changed

+2118
-24
lines changed

33 files changed

+2118
-24
lines changed

.changeset/new-melons-kiss.md

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
---
2+
"thirdweb": patch
3+
---
4+
5+
---
6+
7+
## Marketplace Extensions
8+
9+
Added initial support for the Marketplace extensions, available via the `thirdweb/extensions/marketplace` module.
10+
11+
### Direct Listings
12+
13+
#### Write
14+
15+
- `createListing`
16+
17+
#### Read
18+
19+
- `totalListings`
20+
- `getListing`
21+
- `getAllListings`
22+
- `getAllValidListings`
23+
24+
#### Events
25+
26+
- `buyerApprovedForListingEvent`
27+
- `cancelledListingEvent`
28+
- `currencyApprovedForListingEvent`
29+
- `newListingEvent`
30+
- `newSaleEvent`
31+
- `updatedListingEvent`
32+
33+
### English Auctions
34+
35+
#### Write
36+
37+
- `createAuction`
38+
39+
#### Read
40+
41+
- `totalAuctions`
42+
- `getAuction`
43+
- `getAllAuctions`
44+
- `getAllValidAuctions`
45+
46+
#### Events
47+
48+
- `auctionClosedEvent`
49+
- `cancelledAuctionEvent`
50+
- `newAuctionEvent`
51+
- `newBidEvent`
52+
53+
### Types
54+
55+
- `DirectListing`
56+
- `EnglishAuction`
57+
58+
## ERC721 Extensions
59+
60+
- Added `isERC721` to the `thirdweb/extensions/erc721` module.
61+
62+
## ERC1155 Extensions
63+
64+
- Added `isERC1155` to the `thirdweb/extensions/erc1155` module.

.github/CODEOWNERS

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@
22

33
# Platform team owns everything by default
44

5-
* @jnsdls @joaquim @MananTank
5+
- @jnsdls @joaquim-verges @MananTank
66

77
# legacy packages
8+
89
legacy_packages/auth/ @jnsdls
910
legacy_packages/chains/ @jnsdls
1011
legacy_packages/cli/ @jnsdls
@@ -18,31 +19,34 @@ legacy_packages/react/ @MananTank @jnsdls
1819
legacy_packages/react-core/ @MananTank @jnsdls
1920
legacy_packages/react-native/ @jnsdls
2021
legacy_packages/react-native-compat/ @jnsdls
21-
legacy_packages/sdk/ @joaquim @jnsdls
22+
legacy_packages/sdk/ @joaquim-verges @jnsdls
2223
legacy_packages/storage/ @jnsdls
2324
legacy_packages/wallets/ @MananTank @jnsdls
2425

25-
2626
# legacy e2e
27+
2728
legacy_e2e/ @jnsdls
2829

2930
# packages
3031

3132
## specific thirdweb pieces
33+
3234
packages/thirdweb/src/react/ @MananTank
3335
packages/thirdweb/src/reactive/ @MananTank
34-
packages/thirdweb/src/gas/ @joaquim
36+
packages/thirdweb/src/gas/ @joaquim-verges
3537
packages/thirdweb/src/pay/ @MananTank @IDubuque
3638

3739
packages/typedoc-gen/ @MananTank
40+
3841
# owned by phil for now
42+
3943
packages/service-utils/ @arcoraven
4044
packages/eslint-config-thirdweb/ @jnsdls
4145
packages/tw-tsconfig/ @jnsdls
42-
packages/unity-js-bridge/ @joaquim @0xFirekeeper
43-
46+
packages/unity-js-bridge/ @joaquim-verges @0xFirekeeper
4447

4548
# .github folder + .changeset + turbo config is owned by jonas for now
49+
4650
scripts/ @jnsdls
4751
.github/ @jnsdls
4852
.changeset/config.json @jnsdls

.github/workflows/CI.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ jobs:
7575
uses: codecov/codecov-action@v4
7676
with:
7777
directory: ./packages
78+
flags: packages
7879

7980
e2e:
8081
timeout-minutes: 15

.github/workflows/CI_legacy.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ jobs:
7474
uses: codecov/codecov-action@v4
7575
with:
7676
directory: ./legacy_packages
77+
flags: legacy_packages
7778

7879
e2e:
7980
timeout-minutes: 15

packages/thirdweb/scripts/generate/abis/marketplace/IEnglishAuctions.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,6 @@
1313
"function getAuction(uint256 _auctionId) view returns ((uint256 auctionId, uint256 tokenId, uint256 quantity, uint256 minimumBidAmount, uint256 buyoutBidAmount, uint64 timeBufferInSeconds, uint64 bidBufferBps, uint64 startTimestamp, uint64 endTimestamp, address auctionCreator, address assetContract, address currency, uint8 tokenType, uint8 status) auction)",
1414
"function getWinningBid(uint256 _auctionId) view returns (address bidder, address currency, uint256 bidAmount)",
1515
"function isAuctionExpired(uint256 _auctionId) view returns (bool)",
16-
"function isNewWinningBid(uint256 _auctionId, uint256 _bidAmount) view returns (bool)"
16+
"function isNewWinningBid(uint256 _auctionId, uint256 _bidAmount) view returns (bool)",
17+
"function totalAuctions() view returns (uint256)"
1718
]
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
[
2+
"function initialize(address _defaultAdmin, string _contractURI, address[] _trustedForwarders, address _platformFeeRecipient, uint16 _platformFeeBps)"
3+
]

packages/thirdweb/src/constants/addresses.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,13 @@
44
export const NATIVE_TOKEN_ADDRESS =
55
"0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee";
66

7+
/**
8+
* @internal
9+
*/
10+
export function isNativeTokenAddress(address: string) {
11+
return address.toLowerCase() === NATIVE_TOKEN_ADDRESS;
12+
}
13+
714
/**
815
* The zero address in Ethereum, represented as a hexadecimal string.
916
*/

packages/thirdweb/src/exports/extensions/erc1155.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
// READ
2+
export { isERC1155 } from "../../extensions/erc1155/read/isERC1155.js";
23
export {
34
balanceOfBatch,
45
type BalanceOfBatchParams,

packages/thirdweb/src/exports/extensions/erc721.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
/**
22
* READ extension for ERC721
33
*/
4+
export { isERC721 } from "../../extensions/erc721/read/isERC721.js";
45
export {
56
getNFT,
67
type GetNFTParams,
Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
// ----------------------------
2+
// COMMON
3+
// ----------------------------
4+
5+
export type {
6+
DirectListing,
7+
ListingStatus,
8+
} from "../../extensions/marketplace/types.js";
9+
10+
// ----------------------------
11+
// DIRECT LISTINGS
12+
// ----------------------------
13+
14+
// READ
15+
export { totalListings } from "../../extensions/marketplace/__generated__/IDirectListings/read/totalListings.js";
16+
export {
17+
getListing,
18+
type GetListingParams,
19+
} from "../../extensions/marketplace/read/direct/getListing.js";
20+
export {
21+
getAllListings,
22+
type GetAllListingParams,
23+
} from "../../extensions/marketplace/read/direct/getAllListings.js";
24+
export {
25+
getAllValidListings,
26+
type GetAllValidListingParams,
27+
} from "../../extensions/marketplace/read/direct/getAllValidListings.js";
28+
29+
// WRITE
30+
export {
31+
createListing,
32+
type CreateListingParams,
33+
} from "../../extensions/marketplace/write/direct/createListing.js";
34+
35+
// EVENTS
36+
export {
37+
buyerApprovedForListingEvent,
38+
type BuyerApprovedForListingEventFilters,
39+
} from "../../extensions/marketplace/__generated__/IDirectListings/events/BuyerApprovedForListing.js";
40+
export {
41+
cancelledListingEvent,
42+
type CancelledListingEventFilters,
43+
} from "../../extensions/marketplace/__generated__/IDirectListings/events/CancelledListing.js";
44+
export {
45+
currencyApprovedForListingEvent,
46+
type CurrencyApprovedForListingEventFilters,
47+
} from "../../extensions/marketplace/__generated__/IDirectListings/events/CurrencyApprovedForListing.js";
48+
export {
49+
newListingEvent,
50+
type NewListingEventFilters,
51+
} from "../../extensions/marketplace/__generated__/IDirectListings/events/NewListing.js";
52+
export {
53+
newSaleEvent,
54+
type NewSaleEventFilters,
55+
} from "../../extensions/marketplace/__generated__/IDirectListings/events/NewSale.js";
56+
export {
57+
updatedListingEvent,
58+
type UpdatedListingEventFilters,
59+
} from "../../extensions/marketplace/__generated__/IDirectListings/events/UpdatedListing.js";
60+
61+
// ----------------------------
62+
// ENGLISH AUCTIONS
63+
// ----------------------------
64+
65+
// READ
66+
export { totalAuctions } from "../../extensions/marketplace/__generated__/IEnglishAuctions/read/totalAuctions.js";
67+
export {
68+
getAuction,
69+
type GetAuctionParams,
70+
} from "../../extensions/marketplace/read/english-auction/getAuction.js";
71+
export {
72+
getAllAuctions,
73+
type GetAllAuctionParams,
74+
} from "../../extensions/marketplace/read/english-auction/getAllAuctions.js";
75+
export {
76+
getAllValidAuctions,
77+
type GetAllValidAuctionParams,
78+
} from "../../extensions/marketplace/read/english-auction/getAllValidAuctions.js";
79+
80+
// WRITE
81+
export {
82+
createAuction,
83+
type CreateAuctionParams,
84+
} from "../../extensions/marketplace/write/english-auction/createAuction.js";
85+
86+
// EVENTS
87+
export {
88+
auctionClosedEvent,
89+
type AuctionClosedEventFilters,
90+
} from "../../extensions/marketplace/__generated__/IEnglishAuctions/events/AuctionClosed.js";
91+
export {
92+
cancelledAuctionEvent,
93+
type CancelledAuctionEventFilters,
94+
} from "../../extensions/marketplace/__generated__/IEnglishAuctions/events/CancelledAuction.js";
95+
export {
96+
newAuctionEvent,
97+
type NewAuctionEventFilters,
98+
} from "../../extensions/marketplace/__generated__/IEnglishAuctions/events/NewAuction.js";
99+
export {
100+
newBidEvent,
101+
type NewBidEventFilters,
102+
} from "../../extensions/marketplace/__generated__/IEnglishAuctions/events/NewBid.js";

0 commit comments

Comments
 (0)