npm package: @nftvillage/marketplace-sdk
Description: Marketplace Hooks and functions to interect with Nft Village.
Latest version: 0.1.40

# @nftvillage/marketplace-sdk

Marketplace Hooks and functions to interect with Nft Village.

### Dependencies
```
"@react-dapp/utils": "^0.0.20",
"bignumber.js": "^9.0.1",
"ethereum-multicall": "^2.9.0",
"ethers": "^5.5.1",
"react": "^17.0.2",
```
### Collection Hooks

## _useCreateCollection_


- createCollection 
this hook takes collection data,interface of collection data
- Useage
this hook is used to create the user collection
```
CollectionData {
  name?: string
  description?: string
  symbol?: string
  shortUrl?: string
  coverImage?:string
  logoImage?:string
  royalty?: number
  isVerified?: boolean
}
 ```
 - Return values
 this hook returns Api response interface 
 where T is the collection interface
 ```
 ApiResponse<T> {
  status: boolean
  message: string
  data?: T
}
Collection {
  userAddress: string
  isVerified?: boolean
  address: string
  name?: string
  description?: string
  symbol?: string
  shortUrl?: string
  coverImage?:string
  logoImage?:string
  royalty?: number
  collectionStandard:AssetType
}

 ```

 ## _useCollectionByShortURL_

- fetchCollection 
this hook takes shortUrl as string.
```
shortUrl: string
 ```
 - Return values
 this hook returns collection interface and loading State

 ```
Collection {
  userAddress: string
  isVerified?: boolean
  address: string
  name?: string
  description?: string
  symbol?: string
  shortUrl?: string
  coverImage?:string
  logoImage?:string
  royalty?: number
  collectionStandard:AssetType
},
loading:boolean
 ```

 ## _useCollectionByCollectionAddress_

- fetchCollectionAddress 
this hook takes collection address as string.
```
address: string
 ```
 - Return values
 this hook returns collection interface and loading State
 
 ```
Collection {
  userAddress: string
  isVerified?: boolean
  address: string
  name?: string
  description?: string
  symbol?: string
  shortUrl?: string
  coverImage?:string
  logoImage?:string
  royalty?: number
  collectionStandard:AssetType
},
loading:boolean
 ```

 ## _useAllCollectionsByUserAddress_

- fetchAllCollectionOfUser 
this hook takes User address as string.
```
address: string
 ```
 - Return values
 this hook returns Array of collection interface and loading State
 
 ```
 [
Collection{
  userAddress: string
  isVerified?: boolean
  address: string
  name?: string
  description?: string
  symbol?: string
  shortUrl?: string
  coverImage?:string
  logoImage?:string
  royalty?: number
  collectionStandard:AssetType
},
 ],
loading:boolean
 ```

 ## _useCheckShortUrlAvailability_

- _checkShortUrlAvailability 
this hook takes User shortUrl as string.
```
shortUrl: string
 ```
 - Return values
 this hook returns Boolean isURLAvailable and loading State
 

### Token Hooks


## _useMintERC721_

- mintToken

this hook takes Token interface.

```
Token {
  address: string
  metadata: MetaData
  fees: Fee[] | []
  minter: string
  owner: string
}

type Fee = {
  recipient: string
  value: number
}
```

 - Return values
 this hook returns Api response and tokenId as number 
 where T is the token interface

 ```
 ApiResponse<T> {
  status: boolean
  message: string
  data?: T
}
Token {
  address: string
  tokenId?: number
  metadata: MetaData
  fees: Fee[] | []
  minter: string
  owner: string
}
tokenId:number
```

### Order Hooks


## _useSellOrder_
this takes asset(it's a collection address) as string

- create
this hook takes Order interface

```
Order {
  order: OrderData
  metadata: {
    attributes: Attributes[] | []
    image?: string
    background_color?: string
    external_url?: string
    animation_url?: string
    youtube_url?: string
    category?: string
    name?: string
    description?: string
    address: string
    tokenId: number
    collectionName: string
    makerAddress: string
    price: number
  }
}

OrderData  {
      assetId:number,
      assetType:AssetType,
      assetAmount?:number,
      maker:string,
      paymentToken?:string,
      expirationTime?:number,
      basePrice:number,
    }

Attributes = {
  trait_type: string
  value: string | number
  display_type?: string
}

enum AssetType {
  ERC721,
  ERC1155,
}
enum SaleKind {
  BUYNOW = 0,
  ENGLISHAUCTION = 1,
  DUTCHAUCTION = 2,
}

```

 - Return values
 this hook returns Api response interface 
 where T is the Order interface

 ```
 ApiResponse<T> {
  status: boolean
  message: string
  data?: T
}
 Order {
  order: OrderData
  orderHash?: string
  referrer?: string
  status?: StatusType
  expirationTime?: number
  signature?: string
  metadata: {
    attributes: Attributes[] | []
    image?: string
    background_color?: string
    external_url?: string
    animation_url?: string
    youtube_url?: string
    category?: string
    name?: string
    description?: string
    address: string
    tokenId: number
    collectionName: string
    makerAddress: string
    price: number
  }
  bids?: Bids[] | []
}

 ```

## _useCancelOrder_

- cancel
this hook takes Order interface

```
 Order {
  order: OrderData
  orderHash?: string
  referrer?: string
  status?: StatusType
  expirationTime?: number
  signature?: string
  metadata: {
    attributes: Attributes[] | []
    image?: string
    background_color?: string
    external_url?: string
    animation_url?: string
    youtube_url?: string
    category?: string
    name?: string
    description?: string
    address: string
    tokenId: number
    collectionName: string
    makerAddress: string
    price: number
  }
  bids?: Bids[] | []
}
```

 - Return values
 this hook returns Delete interface


 ```
 Delete{
  message:string,
  status:boolean
}

 ```

## _useOrderBid_


- createBidOrder
this hook takes Order interface

```
Order {
  order: OrderData
  metadata: {
    attributes: Attributes[] | []
    image?: string
    background_color?: string
    external_url?: string
    animation_url?: string
    youtube_url?: string
    category?: string
    name?: string
    description?: string
    address: string
    tokenId: number
    collectionName: string
    makerAddress: string
    price: number
  }
}

OrderData {
      asset,
      assetId,
      maker,
      paymentToken,
      side,
      taker,
      expirationTime,
      basePrice
    }

Attributes = {
  trait_type: string
  value: string | number
  display_type?: string
}
OrderSide {
  BUY,
  SELL,
}
SaleKind {
  BUYNOW = 0,
  ENGLISHAUCTION = 1,
  DUTCHAUCTION = 2,
}

```

 - Return values
 this hook returns Api response interface 
 where T is the Order interface

 ```
 ApiResponse<T> {
  status: boolean
  message: string
  data?: T
}
 Order {
  order: OrderData
  orderHash?: string
  referrer?: string
  status?: StatusType
  expirationTime?: number
  signature?: string
  metadata: {
    attributes: Attributes[] | []
    image?: string
    background_color?: string
    external_url?: string
    animation_url?: string
    youtube_url?: string
    category?: string
    name?: string
    description?: string
    address: string
    tokenId: number
    collectionName: string
    makerAddress: string
    price: number
  }
  bids?: Bids[] | []
}

 ```


## _useBuyFixPriceOrder_

- buyFixOrder 
 this hook takes  asset: string, assetId: number, maker: string
 where maker is the buyer of the order

- approve
 no params

 - Return values 
 this hook returns txResponse interface

 ``` 
 {
    tx: any;
    receipt: any;
    error: any;
    status: boolean;
 }

 isApproved:boolean
 ```


## _useBuyOrder_

- buy

this hook takes two Orders interface buyOrder , sellOrder

```
Order {
  order: OrderData
  orderHash?: string
  referrer?: string
  status?: StatusType
  expirationTime?: number
  signature?: string
  metadata: {
    attributes: Attributes[] | []
    image?: string
    background_color?: string
    external_url?: string
    animation_url?: string
    youtube_url?: string
    category?: string
    name?: string
    description?: string
    address: string
    tokenId: number
    collectionName: string
    makerAddress: string
    price: number
  }
  bids?: Bids[] | []
}
```

 - Return values
 this hook returns txResponse interface
 ``` 
 {
    tx: any;
    receipt: any;
    error: any;
    status: boolean;
 }
 ```


## _useOrder_

- singleOrder
this hook takes orderAsset

```
OrderAsset {
  asset: string
  assetId: number
}

```
 - Return values
 this hook returns Order and loading as boolean


```
Order {
  order: OrderData
  orderHash?: string
  referrer?: string
  status?: StatusType
  expirationTime?: number
  signature?: string
  metadata: {
    attributes: Attributes[] | []
    image?: string
    background_color?: string
    external_url?: string
    animation_url?: string
    youtube_url?: string
    category?: string
    name?: string
    description?: string
    address: string
    tokenId: number
    collectionName: string
    makerAddress: string
    price: number
  }
  bids?: Bids[] | []
}

loading:boolean
```

## _useOrders_

- fetchOrders
this hook takes 

```
saleKind: SaleKind, 
page: number, 
limit: number, 
status: StatusType
```

 - Return values
 this hook returns Array of Order and loading as boolean

 ```
[
Order {
  order: OrderData
  orderHash?: string
  referrer?: string
  status?: StatusType
  expirationTime?: number
  signature?: string
  metadata: {
    attributes: Attributes[] | []
    image?: string
    background_color?: string
    external_url?: string
    animation_url?: string
    youtube_url?: string
    category?: string
    name?: string
    description?: string
    address: string
    tokenId: number
    collectionName: string
    makerAddress: string
    price: number
  }
  bids?: Bids[] | []
 }
],
loading:boolean
 ```

## _useOrdersOfCollection_

- fetchOrdersForCollection
this hook takes 

```
address: string, 
saleKind: SaleKind

```

 - Return values
 this hook returns Array of Order and loading as boolean

 ```
[
Order {
  order: OrderData
  orderHash?: string
  referrer?: string
  status?: StatusType
  expirationTime?: number
  signature?: string
  metadata: {
    attributes: Attributes[] | []
    image?: string
    background_color?: string
    external_url?: string
    animation_url?: string
    youtube_url?: string
    category?: string
    name?: string
    description?: string
    address: string
    tokenId: number
    collectionName: string
    makerAddress: string
    price: number
  }
  bids?: Bids[] | []
 }
],
loading:boolean
 ```

## _useAllListedOrdersForAddress_

- fetchOrdersForAddress

this hooks takes

```
userAddress: string
```

 - Return values
 this hook returns Array of Order and loading as boolean

 ```
[
Order {
  order: OrderData
  orderHash?: string
  referrer?: string
  status?: StatusType
  expirationTime?: number
  signature?: string
  metadata: {
    attributes: Attributes[] | []
    image?: string
    background_color?: string
    external_url?: string
    animation_url?: string
    youtube_url?: string
    category?: string
    name?: string
    description?: string
    address: string
    tokenId: number
    collectionName: string
    makerAddress: string
    price: number
  }
  bids?: Bids[] | []
 }
],
loading:boolean
 ```


## _useOrderHistory_

- fetchOrderHistory

this hooks takes

```
orderData: OrderAsset, 
page: number, 
limit: number
```

 - Return values
 this hook returns Array of Order and loading as boolean

 ```
[
Order {
  order: OrderData
  orderHash?: string
  referrer?: string
  status?: StatusType
  expirationTime?: number
  signature?: string
  metadata: {
    attributes: Attributes[] | []
    image?: string
    background_color?: string
    external_url?: string
    animation_url?: string
    youtube_url?: string
    category?: string
    name?: string
    description?: string
    address: string
    tokenId: number
    collectionName: string
    makerAddress: string
    price: number
  }
  bids?: Bids[] | []
 }
],
loading:boolean
 ```

## _useSpecificOrders_

- fetchSpecificOrders
this hook takes specificOrderData interface key is the collection address
number array is tokeIds 

```
SpecificOrderData {
  [key: string]: number[]
}
```

 - Return values
 this hook returns Array of Order and loading as boolean

 ```
[
Order {
  order: OrderData
  orderHash?: string
  referrer?: string
  status?: StatusType
  expirationTime?: number
  signature?: string
  metadata: {
    attributes: Attributes[] | []
    image?: string
    background_color?: string
    external_url?: string
    animation_url?: string
    youtube_url?: string
    category?: string
    name?: string
    description?: string
    address: string
    tokenId: number
    collectionName: string
    makerAddress: string
    price: number
  }
  bids?: Bids[] | []
 }
],
loading:boolean
 ```


## Search hooks 

## _useFilterMarketPlace_

-filterMarketPlace
this hooks takes FilterMarketPlace interface

```
FilterMarketPlace {
  address?: string
  makerAddress?: string
  name?: string
  collectionName?: string
  category?: string
  minPrice?: number
  maxPrice?: number
  sortBy?: SortBy
}

SortBy = {
  LATEST?: string
  OLDEST?: string
  PRICE_LOW_TO_HIGH?: string
  PRICE_HIGH_TO_LOW?: string
}

```

 - Return values
 this hook returns Array of Order and loading as boolean

 ```
[
Order {
  order: OrderData
  orderHash?: string
  referrer?: string
  status?: StatusType
  expirationTime?: number
  signature?: string
  metadata: {
    attributes: Attributes[] | []
    image?: string
    background_color?: string
    external_url?: string
    animation_url?: string
    youtube_url?: string
    category?: string
    name?: string
    description?: string
    address: string
    tokenId: number
    collectionName: string
    makerAddress: string
    price: number
  }
  bids?: Bids[] | []
 }
],
loading:boolean
 ```

## _useSearchMarketPlace_

- searchMarketPlace

this hooks takes

```
 query: string

```

 - Return values
 this hook returns SearchMarketPlace and loading as boolean

 ```
 
 SearchMarketPlace {
  names: string[]
  collectionNames: string[]
}

 ```