|
1 | 1 | import unfetch from 'isomorphic-unfetch'; |
| 2 | +import { stringify } from 'query-string'; |
2 | 3 | import type { SignedNftOrderV4, SignedNftOrderV4Serialized } from './types'; |
3 | | -import { stringify } from '../../utils/query-string'; |
4 | 4 | import { serializeNftOrder } from './pure'; |
5 | 5 |
|
6 | 6 | export const ORDERBOOK_API_ROOT_URL_PRODUCTION = 'https://api.trader.xyz'; |
@@ -74,25 +74,44 @@ const postOrderToOrderbook = async ( |
74 | 74 | return orderPostResult; |
75 | 75 | }; |
76 | 76 |
|
| 77 | +/** |
| 78 | + * Available query parameters for searching the orderbook |
| 79 | + */ |
77 | 80 | export interface SearchOrdersParams { |
78 | | - erc20Token?: string; |
79 | | - nftTokenId?: string; |
80 | | - nftToken?: string; |
81 | | - nftType?: string; |
82 | | - chainId?: string; |
83 | | - maker?: string; |
84 | | - taker?: string; |
85 | | - nonce?: string; |
| 81 | + nftTokenId: string | string[]; |
| 82 | + erc20Token: string | string[]; |
| 83 | + nftToken: string | string[]; |
| 84 | + nftType: 'ERC721' | 'ERC1155'; |
| 85 | + chainId: string | number | string[] | number[]; |
| 86 | + maker: string; |
| 87 | + taker: string; |
| 88 | + nonce: string | string[]; |
| 89 | + offset: string | number; |
| 90 | + limit: string | number; |
| 91 | + sellOrBuyNft: 'sell' | 'buy'; |
| 92 | + direction: '0' | '1'; |
86 | 93 | // Defaults to only 'open' orders |
87 | | - status?: 'open' | 'filled' | 'expired' | 'cancelled' | 'all'; |
| 94 | + status: 'open' | 'filled' | 'expired' | 'cancelled' | 'all'; |
| 95 | + visibility: 'public' | 'private'; |
| 96 | + valid: 'valid' | 'all'; |
88 | 97 | } |
89 | 98 |
|
| 99 | +/** |
| 100 | + * Search through the public hosted orderbook |
| 101 | + * @param filters Optional query param filters |
| 102 | + * @param requestOptions Fetch options/overrides |
| 103 | + * @param fetchFn Optional fetch function override. Uses unfetch by default. |
| 104 | + * @returns |
| 105 | + */ |
90 | 106 | const searchOrderbook = async ( |
91 | 107 | filters?: Partial<SearchOrdersParams>, |
92 | 108 | requestOptions?: Partial<OrderbookRequestOptions>, |
93 | 109 | fetchFn: typeof unfetch = unfetch |
94 | 110 | ): Promise<SearchOrdersResponsePayload> => { |
95 | | - const stringifiedQueryParams = stringify(filters ?? {}); |
| 111 | + // https://github.com/sindresorhus/query-string#arrayformat |
| 112 | + const stringifiedQueryParams = stringify(filters ?? {}, { |
| 113 | + arrayFormat: 'none', |
| 114 | + }); |
96 | 115 |
|
97 | 116 | let rootUrl = requestOptions?.rootUrl ?? ORDERBOOK_API_ROOT_URL_PRODUCTION; |
98 | 117 |
|
|
0 commit comments