---
# System prepended metadata

title: Streaming Payments & Auction Matching UI Business Requirements (Cadastre Redesign)

---

# Streaming Payments & Auction Matching UI Business Requirements (Cadastre Redesign)

Date of Last Update:: 2022-03-24
Author:: [[@gravenp]]

---

## Overview
The Geo Web Cadastre needs to be updated to accomodate two major changes made to the Geo Web core contracts:

1) The move to streaming network fee payments
2) The addition of current licensor bid matching

The required changes can be implemented within the [existing Cadastre card framework](https://github.com/Geo-Web-Project/cadastre/tree/main/components/cards) along with the creation of two new modals. 

Wireframes for these changes [are available here](https://excalidraw.com/#json=UREB5bAHREpCvJYFg1K7A,MBonqONNbqyOKhJE_JsIvg). 

The following sections oultine the requirements for each of the 12 views envisioned for this redesign.

### 1. Simple Claim
View For: Any user that starts a claim (single-click on an unpopulated coordinate on the map) after the fair launch period
Current Reference: https://github.com/Geo-Web-Project/cadastre/blob/main/components/cards/ClaimInfo.js & https://github.com/Geo-Web-Project/cadastre/blob/main/components/cards/ClaimAction.js

1. Display the existing claim instructions, wireframe 1.1 in the left panel upon the first click ([mimics existing functionality](https://github.com/Geo-Web-Project/cadastre/blob/main/components/cards/ClaimInfo.js))
2. Upon a second click, display the left panel as shown in wireframe 1.2
3. Move all field labels above the entry box (instead of light text in the field as is the current design) 
4. The left panel should be scrollable independent of the map
5. `Parcel Name` and `URI` should be written to the appropriate Ceramic streams fields (mimic existing functionality)
6. The `For Sale Price` is used to calculate the `x% Network Fee` field based on the current network fee rate pulled form the Geo Web core contracts
    * `For Sale Price` is a stored variable for each parcel
7. The % displayed in the Network Fee label should be a variable pulled from the applicable network fee rate
9. The `Claim Payout` field will always = 0.00 (shown for informational reinforcement)
10. The `Stream` field is equal to the Network Fee rate divided by 31,536,000 (seconds in a 365 day year). This value is added to the user's new/existing SuperFluid payment stream
11. The `Stream Buffer` field is equal to the deposit required to open/update the stream in the SuperFluid protocol
12. The `Wrap to ETHx` opens the Wrap ETH modal shown in wireframe 11.1
13. The `Claim` button submits the entered data to the appropriate Ceramic stream fields+pinning and smart contract transactions (which require wallet signing)
14. Display the "Streaming Info Box" defined in https://github.com/Geo-Web-Project/cadastre/issues/94 below the transaction submission buttons.
 
### 2. Edit Parcel
View For: A user that clicks on a valid parcel that is owned by their wallet and DOES NOT have an outstanding bid
Current Reference: https://github.com/Geo-Web-Project/cadastre/blob/main/components/cards/EditAction.js

1. When the licensor of a valid parcel without any bids clicks on a parcel, show the informational panel shown in wireframe 2.1
2. If the user clicks Edit Parcel, show wireframe 2.2/2.3
    * When a user changes their `For Sale Price` the data shown in the "Transaction Summary" section should be calculated and displayed as the *change* in `Stream` rate and required `Stream Buffer`
    * If the `For Sale Price` is not modified, then only changes to Ceramic streams are needed and the "Transaction Summary" section should remain blank.
3. The `Wrap to ETHx` opens the Wrap ETH modal shown in wireframe 11.1
4. The `Submit` button submits the entered data to the appropriate Ceramic stream fields+pinning and smart contract transactions (which require wallet signing)
5. Display the "Streaming Info Box" defined in https://github.com/Geo-Web-Project/cadastre/issues/94 below the transaction submission buttons.

### 3. Auction Bid
View For: A user that clicks on a valid parcel that is owned by a different wallet and DOES NOT have an outstanding bid
Current Reference: https://github.com/Geo-Web-Project/cadastre/blob/main/components/cards/PurchaseAction.js

1. When a user other than the licensor clicks on a valid parcel without any oustanding bids, display the panel as defined in wireframe 3.1.
2. The "How do Geo Web auctions work?" link should open a modal/lightbox with the text shown in the wireframe.
3. The `For Sale Price` for an Auction bid must be greater than or equal to the current `For Sale Price`
    * Show an error message and don't calculate the Network Fee field or Transaction Summary Section if the `For Sale Price` bid is less than the current one.
4. Transaction Summary
    * Collateral Deposit = New `For Sale Price`
    * Purchase Payment = Previous `For Sale Price`
    * Refundable Collateral =  New `For Sale Price` - Previous `For Sale Price`
    * Stream & Stream Buffer are calculated and displayed as in other views
5. The `Wrap to ETHx` opens the Wrap ETH modal shown in wireframe 11.1
6. The `Submit` button submits the entered data to the appropriate Ceramic stream fields+pinning and smart contract transactions (which require wallet signing)
7. Display the "Streaming Info Box" defined in https://github.com/Geo-Web-Project/cadastre/issues/94 below the transaction submission buttons.

### 4. Bid Response
View For: A user that clicks on a valid parcel that is owned by their wallet and HAS an outstanding bid
Current Reference: N/A

1. If a licensor clicks the "Edit Parcel" button when there is an outstanding bid, navigate to the "Edit Parcel" panel displayed in wireframe 4.2
    * Parcels with outsanding bids cannot have their `For Sale Price` modified 
2. Display the "Outstanding Bid" information as shown in wireframe 4.1
    * The "How do Geo Web auctions work?" link opens the modal
    * "Accept Bid" triggers the transfer of the license to the bidder, payment to the licensor, return of the bidders remaining collateral, and initiates their network fee stream.
    * "Reject Bid" navigates the user to the view in wireframe 4.3
3. The `For Sale Price` when rejecting a bid must be greater than or equal to the bid value.
4. The Reject Bid - Transaction Summary is calculated/displayed as follows:
    * Penalty Payment = Bid `For Sale Price` * Penalty Rate
    * Stream & Stream Buffer are calculated as normal
5. The `Wrap to ETHx` opens the Wrap ETH modal shown in wireframe 11.1
6. The `Submit` button submits the entered data to the appropriate Ceramic stream fields+pinning and smart contract transactions (which require wallet signing)
7. Display the "Streaming Info Box" defined in https://github.com/Geo-Web-Project/cadastre/issues/94 below the transaction submission buttons.

### 5. Bid Locked
View For: A user that clicks on a valid parcel that is owned by different wallet and HAS an outstanding bid
Current Reference: N/A

1. If any user other than the current licensor clicks on a parcel with an outstanding bid, display the panel as shown in wireframe 5.1

### 6. Auction Transfer
View For: A user that clicks on a valid parcel that has a outstanding bid beyond the response window
Current Reference: N/A

1. If any user clicks on a parcel with an outstanding bid past the response window, display the panel as shown in wireframe 6.1.
2. The "Trigger Transfer" button can be clicked by any user and enacts the payments, stream modifications, collateral return, and license transfers the same way an accepted bid would.

### 7. Fair Launch Claim
View For: Any user that starts a claim (single-click on an unpopulated coordinate on the map) during the fair launch period
Current Reference: https://github.com/Geo-Web-Project/cadastre/blob/main/components/cards/ClaimInfo.js & https://github.com/Geo-Web-Project/cadastre/blob/main/components/cards/ClaimAction.js

1. Display the Auction Details plus existing claim instructions, wireframe 7.1 in the left panel upon the first click of the map when in the fair launch period.
2. Auction Details (as defined inthe FairLaunchClaimer contract, live updated)
    * Current Required Bid = startingBid - priceDecrease
    * Auction End = auctionEnd
    * Time Remaining = auctionEnd - Current datetime
3. Upon a second click on the map (parcel shape locked), display the panel as shown in wireframe 7.2
    * Max Claim Payment (to Treasury) = Current Required Bid
    * Stream & Stream Buffer calculated/displayed as in other windows
4. The `Wrap to ETHx` opens the Wrap ETH modal shown in wireframe 11.1
5. The `Claim` button submits the entered data to the appropriate Ceramic stream fields+pinning and smart contract transactions (which require wallet signing)
6. Display the "Streaming Info Box" defined in https://github.com/Geo-Web-Project/cadastre/issues/94 below the transaction submission buttons.

### 8. Foreclosure Claim
View For: A user that clicks on an invalid/expired parcel that is owned by a different wallet
Current Reference: https://github.com/Geo-Web-Project/cadastre/blob/main/components/cards/AuctionInfo.js

1. When a user other than the former licensor clicks on a parcel that has an invalid license in auction, display the panel as shown in wireframe 8.1.
2. Auction Details (as defined in Reclaimer contract, live updated)
    * Current Required Bid = Previous `For Sale Price` - priceDecrease
    * Auction End = Datetime of license invaliation + 2 weeks
    * Time Remaining = Auction End - Current datetime 
3. Clicking "Claim" navigates the user to wireframe 8.2
    * Max Claim Payment (to Licensor) = Current Required Bid
    * Stream & Stream Buffer calculated/displayed same as in the other views
4. The `Wrap to ETHx` opens the Wrap ETH modal shown in wireframe 11.1
5. The `Claim` button submits the entered data to the appropriate Ceramic stream fields+pinning and smart contract transactions (which require wallet signing)
6. Display the "Streaming Info Box" defined in https://github.com/Geo-Web-Project/cadastre/issues/94 below the transaction submission buttons.

### 9. Reclaim
View For: A user that clicks on an invalid/expired parcel that is owned by their wallet
Current Reference: https://github.com/Geo-Web-Project/cadastre/blob/main/components/cards/AuctionInfo.js

1. When the former licensor clicks on a parcel that has an invalid license in auction, display the panel as shown in wireframe 9.1.
2. Auction Details (as defined in Reclaimer contract, live updated)
    * Current Required Bid = Previous `For Sale Price` - priceDecrease
    * Auction End = Datetime of license invaliation + 2 weeks
    * Time Remaining = Auction End - Current datetime 
3. Clicking "Reclaim" navigates the user to wireframe 9.2
    * Claim Payment = 0.00 (licensor doesn't have to pay themselves)
    * Stream & Stream Buffer calculated/displayed same as in the other views
4. The `Wrap to ETHx` opens the Wrap ETH modal shown in wireframe 11.1
5. The `Claim` button submits the entered data to the appropriate Ceramic stream fields+pinning and smart contract transactions (which require wallet signing)
6. Display the "Streaming Info Box" defined in https://github.com/Geo-Web-Project/cadastre/issues/94 below the transaction submission buttons.

### 10. Land Portfolio/Payments Dashboard
View For: Any user
Current Reference: N/A

1. The Land Portfolio/Payments Dashboard should be structured as shown in wireframes 10.1 & 10.2
2. Display the (shortened) connected wallet address (0x + 4 digits + ... + final 4 digits)
3. ETHx Balance Exhaustion Datetime = Current Datetime + (Current ETHx Balance/Current Stream Rate)
    * If the balance is already 0, show the warning in wireframe 10.3 
5. Display the connected wallet's ETH and ETHx balances in their respective sections.
6. Allow the user to trigger wrap and unwrapping transactions in their respective sections
7. Parcel Overview Section should display all of the connected wallet's licenses
    * For valid licenses without outstanding bids, show the license ID
    * For valid licenses with outstanding bids, show "New Bid" instead of the license ID
    * For invalid licenses that haven't been claimed in foreclosure, show "Foreclosed" instead of the license ID
        * The `For Sale Price` for invalid parcels should be highlighted with red font & the other calculated fields should be blank.
8. Exit the modal and navigate to the respective parcel if the user clicks on the "Location" icon in the first column
9. Allow the user to modify the `Name` and/or `For Sale Price` for 1 parcel at a time (Edit & Cancel button icons in the far right column)
    * If there is an outstanding bid on the parcel, don't allow edits.
    * Streams for foreclosed parcels must be restarted individually once an ETHx balance is restablished.
    * The "Confirm" button submits the transaction changes to the table, the wallet, and/or Ceramic streams+pinning. It should only be enabled if a change is made to one of the editable values.
10. Display the "Total" row for the numeric columns below the table
11. Display a "Change" row for the numeric columns below the total field if any changes have been made to a `For Sale Price`
    * Clear this row upon submission of the edit transaction.

### 11. Wrap ETHx
View For: Any user
Current Reference: N/A

1. Create a new modal which allows users to wrap their ETH into ETHx
2. Display the connected wallet's current ETH balance (in decimal form)
3. Display the conencted wallet's current ETHx balance (in decimal form)
4. Entry field should accept any positive floating point value in ETH (transaction will be deominated in wei)

### 12. Streaming Info Box
View For: Informational box shown at the bottom of any panel in context of a transaction submission.
Current Reference: https://github.com/Geo-Web-Project/cadastre/blob/main/components/cards/FaucetInfo.js

1. This info box should take the place of the "Faucet Info" card that is currently shown at the bottom of each transaction triggering view.
    * Note: Faucet info for testnets will move to the header 
3. It should display the user's ETHx balance pulled from their connected wallet.
    * Full text: Your current ETHx balance is __. We recommend wrapping enough ETH to cover at least 3 months of payments for ALL of your outstanding streams plus any required 1-time payments and deposits.
5. It should include a link to open the Payments Dashboard modal shown in wireframe #10
    * Link Text: Review your streaming payment dashboard