Skip to content

Latest commit

ย 

History

History
1355 lines (1288 loc) ยท 73 KB

TEST_OUTPUT.md

File metadata and controls

1355 lines (1288 loc) ยท 73 KB
๐ŸŒ network ETH blocknumber 14905987 ๐ŸŒ



  Errors
    โœ“ cancel only from maker (45ms)
    โœ“ prune only invalid orders (139ms)
    โœ“ bid params (14ms)
    order
      โœ“ invalid id (7ms)
      โœ“ insufficient maker allowance (17ms)
      โœ“ insufficient maker balance (27ms)
      invalid params
        โœ“ srcToken zero (7ms)
        โœ“ same tokens (6ms)
        โœ“ srcAmount zero (9ms)
        โœ“ srcBidAmount zero (11ms)
        โœ“ srcBidAmount>srcAmount (6ms)
        โœ“ dstMinAmount zero (7ms)
        โœ“ expired (7ms)
        โœ“ bid delay lower than minimum (7ms)
        โœ“ weth to native (6ms)
        โœ“ same tokens native (6ms)
    verify bid
      โœ“ expired (65ms)
      โœ“ invalid exchange (67ms)
      โœ“ low bid (89ms)
      โœ“ recently filled (112ms)
      โœ“ recently filled custom fill delay (119ms)
      โœ“ insufficient amount out (35ms)
      โœ“ insufficient amount out with excess fee (33ms)
      โœ“ fee underflow protection (35ms)
      โœ“ insufficient amount out when last partial fill (120ms)
      โœ“ insufficient user allowance (42ms)
      โœ“ insufficient user balance (49ms)
    perform fill
      โœ“ expired (46ms)
      โœ“ invalid taker when no existing bid (25ms)
      โœ“ invalid taker when not the winning taker (46ms)
      โœ“ pending bid when still in bidding window of bid delay (48ms)
      โœ“ pending bid with custom delay (98ms)
      โœ“ insufficient out (90ms)
      โœ“ insufficient out with excess fee (81ms)
      โœ“ fee subtracted from dstAmountOut underflow protection (82ms)

  IExchange implementations
    UniswapV2Exchange
      โœ“ prevent invalid paths (5ms)
      โœ“ swap (39ms)
    ParaswapExchange
      โœ“ getAmountOut using pure encoded data from offchain (4ms)
      โœ“ swap with data from paraswap (17568ms)

  FeeOnTransfer tokens
    โœ“ TWAP supports FOT tokens (73ms)
    UniswapV2Exchange supports FOT tokens
      โœ“ throws on normal swap (27ms)
      โœ“ sell tokens with FOT (37ms)

  Lens
    taker biddable orders
      โœ“ filters valid bid orders for taker, by status, paginated (81ms)
      โœ“ filled orders (106ms)
      โœ“ canceled orderes (31ms)
      โœ“ recently filled, after asked delay (120ms)
      โœ“ different taker, or stale bid (66ms)
      โœ“ insufficient maker allowance and balance (74ms)
    taker fillable orders
      โœ“ filter valid fillable orders for taker, paginated, not expired (138ms)
      โœ“ taker won the bid after pending bid window (61ms)
      โœ“ filled (94ms)
      โœ“ expired (46ms)
      โœ“ canceled (52ms)
      โœ“ maker allowance and balance (95ms)
    maker orders
      โœ“ returns all maker orders (13ms)

  TWAPLib with production config
    SpiritSwap on 250
      - constructed with config
      - allowance and approval
      - native token allowance
      - validate tokens
      - submitOrder validations
      - parseOrder
      - orderProgress
      - isMarketOrder
      - market price dstAmount = srcAmount * (srcUsd/dstUsd)
      - limit price dstAmount = srcAmount * limitPrice
      - dst price with limit or market
      - percent above/below market
      - max possible chunk count
      - srcChunkAmount
      - totalChunks
      - fillDelayMillis for evenly distributed trades over maxDuration, with buffer of bid and extra buffer
      - dstMinAmountOut
      with order
        - submit order, getOrder
        - cancel order
        - status opened, canceled
        - status expired
        - status completed
        - getAllOrders
      helper functions
        - getToken
        - isNativeToken
        - isWrappedToken
        - isValidNetwork
        - maker balance
        - wrap native
        - unwrap to native
    SpookySwap on 250
      - constructed with config
      - allowance and approval
      - native token allowance
      - validate tokens
      - submitOrder validations
      - parseOrder
      - orderProgress
      - isMarketOrder
      - market price dstAmount = srcAmount * (srcUsd/dstUsd)
      - limit price dstAmount = srcAmount * limitPrice
      - dst price with limit or market
      - percent above/below market
      - max possible chunk count
      - srcChunkAmount
      - totalChunks
      - fillDelayMillis for evenly distributed trades over maxDuration, with buffer of bid and extra buffer
      - dstMinAmountOut
      with order
        - submit order, getOrder
        - cancel order
        - status opened, canceled
        - status expired
        - status completed
        - getAllOrders
      helper functions
        - getToken
        - isNativeToken
        - isWrappedToken
        - isValidNetwork
        - maker balance
        - wrap native
        - unwrap to native
    Pangolin on 43114
      - constructed with config
      - allowance and approval
      - native token allowance
      - validate tokens
      - submitOrder validations
      - parseOrder
      - orderProgress
      - isMarketOrder
      - market price dstAmount = srcAmount * (srcUsd/dstUsd)
      - limit price dstAmount = srcAmount * limitPrice
      - dst price with limit or market
      - percent above/below market
      - max possible chunk count
      - srcChunkAmount
      - totalChunks
      - fillDelayMillis for evenly distributed trades over maxDuration, with buffer of bid and extra buffer
      - dstMinAmountOut
      with order
        - submit order, getOrder
        - cancel order
        - status opened, canceled
        - status expired
        - status completed
        - getAllOrders
      helper functions
        - getToken
        - isNativeToken
        - isWrappedToken
        - isValidNetwork
        - maker balance
        - wrap native
        - unwrap to native
    QuickSwap on 137
      - constructed with config
      - allowance and approval
      - native token allowance
      - validate tokens
      - submitOrder validations
      - parseOrder
      - orderProgress
      - isMarketOrder
      - market price dstAmount = srcAmount * (srcUsd/dstUsd)
      - limit price dstAmount = srcAmount * limitPrice
      - dst price with limit or market
      - percent above/below market
      - max possible chunk count
      - srcChunkAmount
      - totalChunks
      - fillDelayMillis for evenly distributed trades over maxDuration, with buffer of bid and extra buffer
      - dstMinAmountOut
      with order
        - submit order, getOrder
        - cancel order
        - status opened, canceled
        - status expired
        - status completed
        - getAllOrders
      helper functions
        - getToken
        - isNativeToken
        - isWrappedToken
        - isValidNetwork
        - maker balance
        - wrap native
        - unwrap to native

  maxgas: special test: large order history, paginated reads
โš ๏ธ gasUsed 13658457
    โœ“ taker biddable orders (35741ms)

  Paraswap
    SpiritSwap on 250
      - priceUsd
      - priceUsd for native token uses wToken
      - gas prices
      - find route with other exchanges
      - direct path for univ2 exchanges
      - direct path might be invalid
    SpookySwap on 250
      - priceUsd
      - priceUsd for native token uses wToken
      - gas prices
      - find route with other exchanges
      - direct path for univ2 exchanges
      - direct path might be invalid
    Pangolin on 43114
      - priceUsd
      - priceUsd for native token uses wToken
      - gas prices
      - find route with other exchanges
      - direct path for univ2 exchanges
      - direct path might be invalid
    QuickSwap on 137
      - priceUsd
      - priceUsd for native token uses wToken
      - gas prices
      - find route with other exchanges
      - direct path for univ2 exchanges
      - direct path might be invalid

  Sanity
    โœ“ version (3ms)
    โœ“ maker creates ask order, emits event (26ms)
    โœ“ bid sets Bid fields, emits event (44ms)
    โœ“ fill sets Fill fields and clears the Bid, emits event (90ms)
    โœ“ cancel order, emits event (40ms)
    โœ“ order fully filled, emits event (162ms)
    History
      โœ“ find orders for maker (423ms)
      โœ“ makerOrders has mapping of order ids by maker address, to avoid relying on events (2ms)

  Taker
    โœ“ sanity (6ms)
    โœ“ onlyOwners (36ms)
    โœ“ bid & fill, gas rebate as dstToken without swapping (94ms)
    โœ“ gas rebate when dstToken == nativeToken, unwrap with or without swapping to native (83ms)
    rescue
      โœ“ sends native token balance to caller (12ms)
      โœ“ sends ERC20 token balance to owner (481ms)

  TWAP
    โœ“ single chunk (91ms)
    โœ“ mutiple chunks (320ms)
    โœ“ last chunk may be partial amount (225ms)
    โœ“ outbid current bid within pending period (107ms)
    โœ“ outbid current bid within pending period same path and amount but lower fee (67ms)
    โœ“ enforce bids 1% better than previous (90ms)
    โœ“ clears stale unfilled bid after max bidding window = bidDelay * STALE_BID_DELAY_MUL (87ms)
    โœ“ supports market orders, english auction incentivizes best competitive price (145ms)
    โœ“ prevent winning the bid by manipulating exchange price (98ms)
    โœ“ slippage percent allows price slippage (155ms)
    โœ“ slippage percent at bid time is part of the bidding war (156ms)
    โœ“ native token output support (87ms)
    prune stale invalid order
      โœ“ when no approval (39ms)
      โœ“ when no balance (41ms)

ยท--------------------------------------------|---------------------------|-------------|-----------------------------ยท
|            Solc version: 0.8.16            ยท  Optimizer enabled: true  ยท  Runs: 200  ยท  Block limit: 15000000 gas  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  Methods                                   ยท               12 gwei/gas               ยท       1290.98 usd/eth       โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  Contract               ยท  Method          ยท  Min        ยท  Max        ยท  Avg        ยท  # calls      ยท  usd (avg)  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  ERC20                  ยท  approve         ยท      38027  ยท      60311  ยท      55949  ยท           89  ยท       0.87  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  ERC20                  ยท  transfer        ยท      51618  ยท      65625  ยท      63912  ยท          104  ยท       0.99  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  MockDeflationaryToken  ยท  approve         ยท      46260  ยท      46572  ยท      46370  ยท            6  ยท       0.72  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  MockExchange           ยท  setMockAmounts  ยท      32144  ยท      69156  ยท      51531  ยท           21  ยท       0.80  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  ParaswapExchange       ยท  swap            ยท          -  ยท          -  ยท     476316  ยท            1  ยท       7.38  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  Taker                  ยท  bid             ยท          -  ยท          -  ยท     306721  ยท            3  ยท       4.75  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  Taker                  ยท  fill            ยท     379115  ยท     380241  ยท     379678  ยท            2  ยท       5.88  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  Taker                  ยท  rescue          ยท      39446  ยท      79269  ยท      59358  ยท            2  ยท       0.92  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  TWAP                   ยท  ask             ยท     270218  ยท     355878  ยท     297216  ยท         5079  ยท       4.60  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  TWAP                   ยท  bid             ยท     118205  ยท     300574  ยท     268854  ยท           59  ยท       4.17  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  TWAP                   ยท  cancel          ยท      75989  ยท      87970  ยท      77718  ยท            7  ยท       1.20  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  TWAP                   ยท  fill            ยท     276714  ยท     356811  ยท     333353  ยท           24  ยท       5.16  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  TWAP                   ยท  prune           ยท      89241  ยท      93197  ยท      91219  ยท            2  ยท       1.41  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  UniswapV2Exchange      ยท  swap            ยท     165841  ยท     185775  ยท     175808  ยท            2  ยท       2.72  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  Deployments                               ยท                                         ยท  % of limit   ยท             โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  Lens                                      ยท          -  ยท          -  ยท    1299068  ยท        8.7 %  ยท      20.12  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  MockDeflationaryToken                     ยท          -  ยท          -  ยท     711309  ยท        4.7 %  ยท      11.02  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  MockExchange                              ยท          -  ยท          -  ยท     508251  ยท        3.4 %  ยท       7.87  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  ParaswapExchange                          ยท          -  ยท          -  ยท     624766  ยท        4.2 %  ยท       9.68  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  Taker                                     ยท          -  ยท          -  ยท    1275489  ยท        8.5 %  ยท      19.76  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  TWAP                                      ยท          -  ยท          -  ยท    3034281  ยท       20.2 %  ยท      47.01  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  UniswapV2Exchange                         ยท          -  ยท          -  ยท     757237  ยท          5 %  ยท      11.73  โ”‚
ยท--------------------------------------------|-------------|-------------|-------------|---------------|-------------ยท

  84 passing (4m)
  144 pending



๐ŸŒ network FTM blocknumber 39800909 ๐ŸŒ



  Errors
    โœ“ cancel only from maker (228ms)
    โœ“ prune only invalid orders (5962ms)
    โœ“ bid params (16ms)
    order
      โœ“ invalid id (9ms)
      โœ“ insufficient maker allowance (19ms)
      โœ“ insufficient maker balance (173ms)
      invalid params
        โœ“ srcToken zero (7ms)
        โœ“ same tokens (6ms)
        โœ“ srcAmount zero (6ms)
        โœ“ srcBidAmount zero (7ms)
        โœ“ srcBidAmount>srcAmount (7ms)
        โœ“ dstMinAmount zero (6ms)
        โœ“ expired (8ms)
        โœ“ bid delay lower than minimum (8ms)
        โœ“ weth to native (6ms)
        โœ“ same tokens native (5ms)
    verify bid
      โœ“ expired (71ms)
      โœ“ invalid exchange (902ms)
      โœ“ low bid (109ms)
      โœ“ recently filled (134ms)
      โœ“ recently filled custom fill delay (137ms)
      โœ“ insufficient amount out (37ms)
      โœ“ insufficient amount out with excess fee (38ms)
      โœ“ fee underflow protection (37ms)
      โœ“ insufficient amount out when last partial fill (147ms)
      โœ“ insufficient user allowance (46ms)
      โœ“ insufficient user balance (48ms)
    perform fill
      โœ“ expired (51ms)
      โœ“ invalid taker when no existing bid (25ms)
      โœ“ invalid taker when not the winning taker (48ms)
      โœ“ pending bid when still in bidding window of bid delay (47ms)
      โœ“ pending bid with custom delay (107ms)
      โœ“ insufficient out (434ms)
      โœ“ insufficient out with excess fee (85ms)
      โœ“ fee subtracted from dstAmountOut underflow protection (84ms)

  IExchange implementations
    UniswapV2Exchange
      โœ“ prevent invalid paths (5ms)
      โœ“ swap (204ms)
    ParaswapExchange
      โœ“ getAmountOut using pure encoded data from offchain (4ms)
      โœ“ swap with data from paraswap (30026ms)

  FeeOnTransfer tokens
    โœ“ TWAP supports FOT tokens (543ms)
    UniswapV2Exchange supports FOT tokens
      โœ“ throws on normal swap (30ms)
      โœ“ sell tokens with FOT (41ms)

  Lens
    taker biddable orders
      โœ“ filters valid bid orders for taker, by status, paginated (81ms)
      โœ“ filled orders (115ms)
      โœ“ canceled orderes (32ms)
      โœ“ recently filled, after asked delay (131ms)
      โœ“ different taker, or stale bid (66ms)
      โœ“ insufficient maker allowance and balance (214ms)
    taker fillable orders
      โœ“ filter valid fillable orders for taker, paginated, not expired (145ms)
      โœ“ taker won the bid after pending bid window (66ms)
      โœ“ filled (103ms)
      โœ“ expired (44ms)
      โœ“ canceled (66ms)
      โœ“ maker allowance and balance (102ms)
    maker orders
      โœ“ returns all maker orders (16ms)

  TWAPLib with production config
    SpiritSwap on 250
      โœ“ constructed with config (1ms)
      โœ“ allowance and approval (481ms)
      โœ“ native token allowance (1ms)
      โœ“ validate tokens (454ms)
      โœ“ submitOrder validations (295ms)
      โœ“ parseOrder (3ms)
      โœ“ orderProgress (2ms)
      โœ“ isMarketOrder (5ms)
      โœ“ market price dstAmount = srcAmount * (srcUsd/dstUsd) (279ms)
      โœ“ limit price dstAmount = srcAmount * limitPrice (281ms)
      โœ“ dst price with limit or market (328ms)
      โœ“ percent above/below market (2ms)
      โœ“ max possible chunk count (216ms)
      โœ“ srcChunkAmount (1ms)
      โœ“ totalChunks (1ms)
      โœ“ fillDelayMillis for evenly distributed trades over maxDuration, with buffer of bid and extra buffer (3ms)
      โœ“ dstMinAmountOut (323ms)
      with order
        โœ“ submit order, getOrder (6ms)
        โœ“ cancel order (64ms)
        โœ“ status opened, canceled (63ms)
        โœ“ status expired (4ms)
        โœ“ status completed (26568ms)
        โœ“ getAllOrders (295ms)
      helper functions
        โœ“ getToken (213ms)
        โœ“ isNativeToken (137ms)
        โœ“ isWrappedToken (139ms)
        โœ“ isValidNetwork (0ms)
        โœ“ maker balance (563ms)
        โœ“ wrap native (556ms)
        โœ“ unwrap to native (631ms)
    SpookySwap on 250
      โœ“ constructed with config (0ms)
      โœ“ allowance and approval (336ms)
      โœ“ native token allowance (1ms)
      โœ“ validate tokens (330ms)
      โœ“ submitOrder validations (293ms)
      โœ“ parseOrder (2ms)
      โœ“ orderProgress (3ms)
      โœ“ isMarketOrder (1ms)
      โœ“ market price dstAmount = srcAmount * (srcUsd/dstUsd) (286ms)
      โœ“ limit price dstAmount = srcAmount * limitPrice (284ms)
      โœ“ dst price with limit or market (295ms)
      โœ“ percent above/below market (0ms)
      โœ“ max possible chunk count (221ms)
      โœ“ srcChunkAmount (1ms)
      โœ“ totalChunks (1ms)
      โœ“ fillDelayMillis for evenly distributed trades over maxDuration, with buffer of bid and extra buffer (1ms)
      โœ“ dstMinAmountOut (307ms)
      with order
        โœ“ submit order, getOrder (6ms)
        โœ“ cancel order (66ms)
        โœ“ status opened, canceled (66ms)
        โœ“ status expired (3ms)
        โœ“ status completed (5850ms)
        โœ“ getAllOrders (147ms)
      helper functions
        โœ“ getToken (138ms)
        โœ“ isNativeToken (144ms)
        โœ“ isWrappedToken (135ms)
        โœ“ isValidNetwork (0ms)
        โœ“ maker balance (663ms)
        โœ“ wrap native (553ms)
        โœ“ unwrap to native (611ms)
    Pangolin on 43114
      - constructed with config
      - allowance and approval
      - native token allowance
      - validate tokens
      - submitOrder validations
      - parseOrder
      - orderProgress
      - isMarketOrder
      - market price dstAmount = srcAmount * (srcUsd/dstUsd)
      - limit price dstAmount = srcAmount * limitPrice
      - dst price with limit or market
      - percent above/below market
      - max possible chunk count
      - srcChunkAmount
      - totalChunks
      - fillDelayMillis for evenly distributed trades over maxDuration, with buffer of bid and extra buffer
      - dstMinAmountOut
      with order
        - submit order, getOrder
        - cancel order
        - status opened, canceled
        - status expired
        - status completed
        - getAllOrders
      helper functions
        - getToken
        - isNativeToken
        - isWrappedToken
        - isValidNetwork
        - maker balance
        - wrap native
        - unwrap to native
    QuickSwap on 137
      - constructed with config
      - allowance and approval
      - native token allowance
      - validate tokens
      - submitOrder validations
      - parseOrder
      - orderProgress
      - isMarketOrder
      - market price dstAmount = srcAmount * (srcUsd/dstUsd)
      - limit price dstAmount = srcAmount * limitPrice
      - dst price with limit or market
      - percent above/below market
      - max possible chunk count
      - srcChunkAmount
      - totalChunks
      - fillDelayMillis for evenly distributed trades over maxDuration, with buffer of bid and extra buffer
      - dstMinAmountOut
      with order
        - submit order, getOrder
        - cancel order
        - status opened, canceled
        - status expired
        - status completed
        - getAllOrders
      helper functions
        - getToken
        - isNativeToken
        - isWrappedToken
        - isValidNetwork
        - maker balance
        - wrap native
        - unwrap to native

  maxgas: special test: large order history, paginated reads
โš ๏ธ gasUsed 13658457
    โœ“ taker biddable orders (36912ms)

  Paraswap
    SpiritSwap on 250
      โœ“ priceUsd (1501ms)
      โœ“ priceUsd for native token uses wToken (440ms)
      โœ“ gas prices (243ms)
      โœ“ find route with other exchanges (1460ms)
      โœ“ direct path for univ2 exchanges (234ms)
      โœ“ direct path might be invalid (533ms)
    SpookySwap on 250
      โœ“ priceUsd (864ms)
      โœ“ priceUsd for native token uses wToken (702ms)
      โœ“ gas prices (425ms)
      โœ“ find route with other exchanges (1810ms)
      โœ“ direct path for univ2 exchanges (1770ms)
      โœ“ direct path might be invalid (716ms)
    Pangolin on 43114
      - priceUsd
      - priceUsd for native token uses wToken
      - gas prices
      - find route with other exchanges
      - direct path for univ2 exchanges
      - direct path might be invalid
    QuickSwap on 137
      - priceUsd
      - priceUsd for native token uses wToken
      - gas prices
      - find route with other exchanges
      - direct path for univ2 exchanges
      - direct path might be invalid

  Sanity
    โœ“ version (2ms)
    โœ“ maker creates ask order, emits event (36ms)
    โœ“ bid sets Bid fields, emits event (45ms)
    โœ“ fill sets Fill fields and clears the Bid, emits event (101ms)
    โœ“ cancel order, emits event (41ms)
    โœ“ order fully filled, emits event (179ms)
    History
      โœ“ find orders for maker (163ms)
      โœ“ makerOrders has mapping of order ids by maker address, to avoid relying on events (2ms)

  Taker
    โœ“ sanity (5ms)
    โœ“ onlyOwners (37ms)
    โœ“ bid & fill, gas rebate as dstToken without swapping (94ms)
    โœ“ gas rebate when dstToken == nativeToken, unwrap with or without swapping to native (636ms)
    rescue
      โœ“ sends native token balance to caller (10ms)
      โœ“ sends ERC20 token balance to owner (172ms)

  TWAP
    โœ“ single chunk (96ms)
    โœ“ mutiple chunks (325ms)
    โœ“ last chunk may be partial amount (242ms)
    โœ“ outbid current bid within pending period (101ms)
    โœ“ outbid current bid within pending period same path and amount but lower fee (76ms)
    โœ“ enforce bids 1% better than previous (114ms)
    โœ“ clears stale unfilled bid after max bidding window = bidDelay * STALE_BID_DELAY_MUL (125ms)
    โœ“ supports market orders, english auction incentivizes best competitive price (156ms)
    โœ“ prevent winning the bid by manipulating exchange price (86ms)
    โœ“ slippage percent allows price slippage (138ms)
    โœ“ slippage percent at bid time is part of the bidding war (108ms)
    โœ“ native token output support (79ms)
    prune stale invalid order
      โœ“ when no approval (40ms)
      โœ“ when no balance (37ms)

ยท--------------------------------------------|---------------------------|-------------|-----------------------------ยท
|            Solc version: 0.8.16            ยท  Optimizer enabled: true  ยท  Runs: 200  ยท  Block limit: 15000000 gas  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  Methods                                                                                                           โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  Contract               ยท  Method          ยท  Min        ยท  Max        ยท  Avg        ยท  # calls      ยท  usd (avg)  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  ERC20                  ยท  approve         ยท      24299  ยท      46583  ยท      42767  ยท          103  ยท          -  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  ERC20                  ยท  transfer        ยท      46731  ยท      52345  ยท      51439  ยท          164  ยท          -  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  MockDeflationaryToken  ยท  approve         ยท      46260  ยท      46572  ยท      46370  ยท            6  ยท          -  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  MockExchange           ยท  setMockAmounts  ยท      32144  ยท      69156  ยท      51531  ยท           21  ยท          -  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  ParaswapExchange       ยท  swap            ยท          -  ยท          -  ยท    1273980  ยท            1  ยท          -  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  Taker                  ยท  bid             ยท          -  ยท          -  ยท     331333  ยท            3  ยท          -  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  Taker                  ยท  fill            ยท     430860  ยท     547765  ยท     489313  ยท            2  ยท          -  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  Taker                  ยท  rescue          ยท      39400  ยท      63693  ยท      51547  ยท            2  ยท          -  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  TWAP                   ยท  ask             ยท     262410  ยท     348070  ยท     289514  ยท         5091  ยท          -  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  TWAP                   ยท  bid             ยท     113439  ยท    1946012  ยท     340717  ยท           63  ยท          -  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  TWAP                   ยท  cancel          ยท      75989  ยท      90308  ยท      77306  ยท           11  ยท          -  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  TWAP                   ยท  fill            ยท     269304  ยท    1111991  ยท     417766  ยท           28  ยท          -  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  TWAP                   ยท  prune           ยท      82151  ยท      85389  ยท      83770  ยท            2  ยท          -  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  UniswapV2Exchange      ยท  swap            ยท     193117  ยท     207346  ยท     200232  ยท            2  ยท          -  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  Deployments                               ยท                                         ยท  % of limit   ยท             โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  Lens                                      ยท          -  ยท          -  ยท    1299068  ยท        8.7 %  ยท          -  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  MockDeflationaryToken                     ยท          -  ยท          -  ยท     711309  ยท        4.7 %  ยท          -  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  MockExchange                              ยท          -  ยท          -  ยท     508251  ยท        3.4 %  ยท          -  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  ParaswapExchange                          ยท          -  ยท          -  ยท     624766  ยท        4.2 %  ยท          -  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  Taker                                     ยท          -  ยท          -  ยท    1275489  ยท        8.5 %  ยท          -  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  TWAP                                      ยท          -  ยท          -  ยท    3034281  ยท       20.2 %  ยท          -  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  UniswapV2Exchange                         ยท          -  ยท          -  ยท     757237  ยท          5 %  ยท          -  โ”‚
ยท--------------------------------------------|-------------|-------------|-------------|---------------|-------------ยท

  156 passing (9m)
  72 pending

  
๐ŸŒ network AVAX blocknumber 15609313 ๐ŸŒ



  Errors
    โœ“ cancel only from maker (51ms)
    โœ“ prune only invalid orders (203ms)
    โœ“ bid params (14ms)
    order
      โœ“ invalid id (8ms)
      โœ“ insufficient maker allowance (22ms)
      โœ“ insufficient maker balance (30ms)
      invalid params
        โœ“ srcToken zero (7ms)
        โœ“ same tokens (8ms)
        โœ“ srcAmount zero (7ms)
        โœ“ srcBidAmount zero (7ms)
        โœ“ srcBidAmount>srcAmount (7ms)
        โœ“ dstMinAmount zero (7ms)
        โœ“ expired (6ms)
        โœ“ bid delay lower than minimum (7ms)
        โœ“ weth to native (8ms)
        โœ“ same tokens native (8ms)
    verify bid
      โœ“ expired (78ms)
      โœ“ invalid exchange (73ms)
      โœ“ low bid (110ms)
      โœ“ recently filled (148ms)
      โœ“ recently filled custom fill delay (153ms)
      โœ“ insufficient amount out (39ms)
      โœ“ insufficient amount out with excess fee (42ms)
      โœ“ fee underflow protection (41ms)
      โœ“ insufficient amount out when last partial fill (144ms)
      โœ“ insufficient user allowance (47ms)
      โœ“ insufficient user balance (50ms)
    perform fill
      โœ“ expired (54ms)
      โœ“ invalid taker when no existing bid (27ms)
      โœ“ invalid taker when not the winning taker (52ms)
      โœ“ pending bid when still in bidding window of bid delay (51ms)
      โœ“ pending bid with custom delay (110ms)
      โœ“ insufficient out (88ms)
      โœ“ insufficient out with excess fee (85ms)
      โœ“ fee subtracted from dstAmountOut underflow protection (85ms)

  IExchange implementations
    UniswapV2Exchange
      โœ“ swap (59ms)
    ParaswapExchange
      โœ“ getAmountOut using pure encoded data from offchain (3ms)
      โœ“ swap with data from paraswap (24523ms)

  FeeOnTransfer tokens
    โœ“ TWAP supports FOT tokens (85ms)
    UniswapV2Exchange supports FOT tokens
      โœ“ throws on normal swap (31ms)
      โœ“ sell tokens with FOT (41ms)

  Lens
    taker biddable orders
      โœ“ filters valid bid orders for taker, by status, paginated (91ms)
      โœ“ filled orders (131ms)
      โœ“ canceled orderes (37ms)
      โœ“ recently filled, after asked delay (151ms)
      โœ“ different taker, or stale bid (76ms)
      โœ“ insufficient maker allowance and balance (84ms)
    taker fillable orders
      โœ“ filter valid fillable orders for taker, paginated, not expired (151ms)
      โœ“ taker won the bid after pending bid window (69ms)
      โœ“ filled (116ms)
      โœ“ expired (50ms)
      โœ“ canceled (62ms)
      โœ“ maker allowance and balance (107ms)
    maker orders
      โœ“ returns all maker orders (15ms)

  TWAPLib with production config
    SpiritSwap on 250
      - constructed with config
      - allowance and approval
      - native token allowance
      - validate tokens
      - submitOrder validations
      - parseOrder
      - orderProgress
      - isMarketOrder
      - market price dstAmount = srcAmount * (srcUsd/dstUsd)
      - limit price dstAmount = srcAmount * limitPrice
      - dst price with limit or market
      - percent above/below market
      - max possible chunk count
      - srcChunkAmount
      - totalChunks
      - fillDelayMillis for evenly distributed trades over maxDuration, with buffer of bid and extra buffer
      - dstMinAmountOut
      with order
        - submit order, getOrder
        - cancel order
        - status opened, canceled
        - status expired
        - status completed
        - getAllOrders
      helper functions
        - getToken
        - isNativeToken
        - isWrappedToken
        - isValidNetwork
        - maker balance
        - wrap native
        - unwrap to native
    SpookySwap on 250
      - constructed with config
      - allowance and approval
      - native token allowance
      - validate tokens
      - submitOrder validations
      - parseOrder
      - orderProgress
      - isMarketOrder
      - market price dstAmount = srcAmount * (srcUsd/dstUsd)
      - limit price dstAmount = srcAmount * limitPrice
      - dst price with limit or market
      - percent above/below market
      - max possible chunk count
      - srcChunkAmount
      - totalChunks
      - fillDelayMillis for evenly distributed trades over maxDuration, with buffer of bid and extra buffer
      - dstMinAmountOut
      with order
        - submit order, getOrder
        - cancel order
        - status opened, canceled
        - status expired
        - status completed
        - getAllOrders
      helper functions
        - getToken
        - isNativeToken
        - isWrappedToken
        - isValidNetwork
        - maker balance
        - wrap native
        - unwrap to native
    Pangolin on 43114
      โœ“ constructed with config (0ms)
      โœ“ allowance and approval (358ms)
      โœ“ native token allowance (2ms)
      โœ“ validate tokens (190ms)
      โœ“ submitOrder validations (153ms)
      โœ“ parseOrder (3ms)
      โœ“ orderProgress (1ms)
      โœ“ isMarketOrder (1ms)
      โœ“ market price dstAmount = srcAmount * (srcUsd/dstUsd) (153ms)
      โœ“ limit price dstAmount = srcAmount * limitPrice (149ms)
      โœ“ dst price with limit or market (195ms)
      โœ“ percent above/below market (2ms)
      โœ“ max possible chunk count (102ms)
      โœ“ srcChunkAmount (0ms)
      โœ“ totalChunks (2ms)
      โœ“ fillDelayMillis for evenly distributed trades over maxDuration, with buffer of bid and extra buffer (1ms)
      โœ“ dstMinAmountOut (192ms)
      with order
        โœ“ submit order, getOrder (7ms)
        โœ“ cancel order (67ms)
        โœ“ status opened, canceled (71ms)
        โœ“ status expired (3ms)
        โœ“ status completed (3557ms)
        โœ“ getAllOrders (71ms)
      helper functions
        โœ“ getToken (81ms)
        โœ“ isNativeToken (72ms)
        โœ“ isWrappedToken (77ms)
        โœ“ isValidNetwork (0ms)
        โœ“ maker balance (310ms)
        โœ“ wrap native (176ms)
        โœ“ unwrap to native (204ms)
    QuickSwap on 137
      - constructed with config
      - allowance and approval
      - native token allowance
      - validate tokens
      - submitOrder validations
      - parseOrder
      - orderProgress
      - isMarketOrder
      - market price dstAmount = srcAmount * (srcUsd/dstUsd)
      - limit price dstAmount = srcAmount * limitPrice
      - dst price with limit or market
      - percent above/below market
      - max possible chunk count
      - srcChunkAmount
      - totalChunks
      - fillDelayMillis for evenly distributed trades over maxDuration, with buffer of bid and extra buffer
      - dstMinAmountOut
      with order
        - submit order, getOrder
        - cancel order
        - status opened, canceled
        - status expired
        - status completed
        - getAllOrders
      helper functions
        - getToken
        - isNativeToken
        - isWrappedToken
        - isValidNetwork
        - maker balance
        - wrap native
        - unwrap to native

  maxgas: special test: large order history, paginated reads
โš ๏ธ gasUsed 13658457
    โœ“ taker biddable orders (115735ms)

  Paraswap
    SpiritSwap on 250
      - priceUsd
      - priceUsd for native token uses wToken
      - gas prices
      - find route with other exchanges
      - direct path for univ2 exchanges
      - direct path might be invalid
    SpookySwap on 250
      - priceUsd
      - priceUsd for native token uses wToken
      - gas prices
      - find route with other exchanges
      - direct path for univ2 exchanges
      - direct path might be invalid
    Pangolin on 43114
      โœ“ priceUsd (578ms)
      โœ“ priceUsd for native token uses wToken (1027ms)
      โœ“ gas prices (184ms)
      โœ“ find route with other exchanges (519ms)
      โœ“ direct path for univ2 exchanges (926ms)
      โœ“ direct path might be invalid (659ms)
    QuickSwap on 137
      - priceUsd
      - priceUsd for native token uses wToken
      - gas prices
      - find route with other exchanges
      - direct path for univ2 exchanges
      - direct path might be invalid

  Sanity
    โœ“ version (2ms)
    โœ“ maker creates ask order, emits event (27ms)
    โœ“ bid sets Bid fields, emits event (56ms)
    โœ“ fill sets Fill fields and clears the Bid, emits event (108ms)
    โœ“ cancel order, emits event (45ms)
    โœ“ order fully filled, emits event (306ms)
    History
      โœ“ find orders for maker (15ms)
      โœ“ makerOrders has mapping of order ids by maker address, to avoid relying on events (2ms)

  Taker
    โœ“ sanity (6ms)
    โœ“ onlyOwners (63ms)
    โœ“ bid & fill, gas rebate as dstToken without swapping (135ms)
    โœ“ gas rebate when dstToken == nativeToken, unwrap with or without swapping to native (122ms)
    rescue
      โœ“ sends native token balance to caller (12ms)
      โœ“ sends ERC20 token balance to owner (52ms)

  TWAP
    โœ“ single chunk (139ms)
    โœ“ mutiple chunks (384ms)
    โœ“ last chunk may be partial amount (257ms)
    โœ“ outbid current bid within pending period (113ms)
    โœ“ outbid current bid within pending period same path and amount but lower fee (71ms)
    โœ“ enforce bids 1% better than previous (87ms)
    โœ“ clears stale unfilled bid after max bidding window = bidDelay * STALE_BID_DELAY_MUL (86ms)
    โœ“ supports market orders, english auction incentivizes best competitive price (167ms)
    โœ“ prevent winning the bid by manipulating exchange price (91ms)
    โœ“ slippage percent allows price slippage (150ms)
    โœ“ slippage percent at bid time is part of the bidding war (117ms)
    โœ“ native token output support (89ms)
    prune stale invalid order
      โœ“ when no approval (39ms)
      โœ“ when no balance (78ms)

ยท--------------------------------------------|---------------------------|-------------|-----------------------------ยท
|            Solc version: 0.8.16            ยท  Optimizer enabled: true  ยท  Runs: 200  ยท  Block limit: 15000000 gas  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  Methods                                   ยท               25 gwei/gas               ยท       13.04 usd/avax        โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  Contract               ยท  Method          ยท  Min        ยท  Max        ยท  Avg        ยท  # calls      ยท  usd (avg)  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  ERC20                  ยท  approve         ยท      37906  ยท      60190  ยท      56121  ยท           96  ยท       0.02  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  ERC20                  ยท  transfer        ยท      52503  ยท      65536  ยท      64277  ยท          133  ยท       0.02  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  MockDeflationaryToken  ยท  approve         ยท      46260  ยท      46572  ยท      46370  ยท            6  ยท       0.02  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  MockExchange           ยท  setMockAmounts  ยท      32144  ยท      69156  ยท      51531  ยท           21  ยท       0.02  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  ParaswapExchange       ยท  swap            ยท          -  ยท          -  ยท    1633467  ยท            1  ยท       0.53  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  Taker                  ยท  bid             ยท          -  ยท          -  ยท     337959  ยท            3  ยท       0.11  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  Taker                  ยท  fill            ยท     445854  ยท     558807  ยท     502331  ยท            2  ยท       0.16  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  Taker                  ยท  rescue          ยท      39403  ยท      78947  ยท      59175  ยท            2  ยท       0.02  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  TWAP                   ยท  ask             ยท     270028  ยท     355688  ยท     297095  ยท         5085  ยท       0.10  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  TWAP                   ยท  bid             ยท     121057  ยท     331811  ยท     294894  ยท           61  ยท       0.10  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  TWAP                   ยท  cancel          ยท      75989  ยท      90308  ยท      77594  ยท            9  ยท       0.03  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  TWAP                   ยท  fill            ยท     282822  ยท     413704  ยท     381403  ยท           26  ยท       0.12  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  TWAP                   ยท  prune           ยท      89152  ยท      93019  ยท      91086  ยท            2  ยท       0.03  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  UniswapV2Exchange      ยท  swap            ยท     187869  ยท     226491  ยท     207180  ยท            2  ยท       0.07  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  Deployments                               ยท                                         ยท  % of limit   ยท             โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  Lens                                      ยท          -  ยท          -  ยท    1299068  ยท        8.7 %  ยท       0.42  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  MockDeflationaryToken                     ยท          -  ยท          -  ยท     711309  ยท        4.7 %  ยท       0.23  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  MockExchange                              ยท          -  ยท          -  ยท     508251  ยท        3.4 %  ยท       0.17  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  ParaswapExchange                          ยท          -  ยท          -  ยท     624766  ยท        4.2 %  ยท       0.20  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  Taker                                     ยท          -  ยท          -  ยท    1275489  ยท        8.5 %  ยท       0.42  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  TWAP                                      ยท          -  ยท          -  ยท    3034281  ยท       20.2 %  ยท       0.99  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  UniswapV2Exchange                         ยท          -  ยท          -  ยท     722009  ยท        4.8 %  ยท       0.24  โ”‚
ยท--------------------------------------------|-------------|-------------|-------------|---------------|-------------ยท

  119 passing (6m)
  108 pending


  
๐ŸŒ network POLY blocknumber 29174252 ๐ŸŒ



  Errors
    โœ“ cancel only from maker (496ms)
    โœ“ prune only invalid orders (4303ms)
    โœ“ bid params (13ms)
    order
      โœ“ invalid id (8ms)
      โœ“ insufficient maker allowance (20ms)
      โœ“ insufficient maker balance (422ms)
      invalid params
        โœ“ srcToken zero (8ms)
        โœ“ same tokens (6ms)
        โœ“ srcAmount zero (7ms)
        โœ“ srcBidAmount zero (6ms)
        โœ“ srcBidAmount>srcAmount (7ms)
        โœ“ dstMinAmount zero (6ms)
        โœ“ expired (7ms)
        โœ“ bid delay lower than minimum (9ms)
        โœ“ weth to native (7ms)
        โœ“ same tokens native (6ms)
    verify bid
      โœ“ expired (69ms)
      โœ“ invalid exchange (1214ms)
      โœ“ low bid (105ms)
      โœ“ recently filled (122ms)
      โœ“ recently filled custom fill delay (130ms)
      โœ“ insufficient amount out (42ms)
      โœ“ insufficient amount out with excess fee (41ms)
      โœ“ fee underflow protection (37ms)
      โœ“ insufficient amount out when last partial fill (132ms)
      โœ“ insufficient user allowance (43ms)
      โœ“ insufficient user balance (50ms)
    perform fill
      โœ“ expired (51ms)
      โœ“ invalid taker when no existing bid (28ms)
      โœ“ invalid taker when not the winning taker (53ms)
      โœ“ pending bid when still in bidding window of bid delay (49ms)
      โœ“ pending bid with custom delay (96ms)
      โœ“ insufficient out (705ms)
      โœ“ insufficient out with excess fee (91ms)
      โœ“ fee subtracted from dstAmountOut underflow protection (90ms)

  IExchange implementations
    UniswapV2Exchange
      โœ“ swap (246ms)
    ParaswapExchange
      โœ“ getAmountOut using pure encoded data from offchain (6ms)
      โœ“ swap with data from paraswap (24694ms)

  FeeOnTransfer tokens
    โœ“ TWAP supports FOT tokens (694ms)
    UniswapV2Exchange supports FOT tokens
      โœ“ throws on normal swap (26ms)
      โœ“ sell tokens with FOT (43ms)

  Lens
    taker biddable orders
      โœ“ filters valid bid orders for taker, by status, paginated (88ms)
      โœ“ filled orders (112ms)
      โœ“ canceled orderes (36ms)
      โœ“ recently filled, after asked delay (126ms)
      โœ“ different taker, or stale bid (65ms)
      โœ“ insufficient maker allowance and balance (519ms)
    taker fillable orders
      โœ“ filter valid fillable orders for taker, paginated, not expired (139ms)
      โœ“ taker won the bid after pending bid window (65ms)
      โœ“ filled (96ms)
      โœ“ expired (47ms)
      โœ“ canceled (57ms)
      โœ“ maker allowance and balance (103ms)
    maker orders
      โœ“ returns all maker orders (16ms)

  TWAPLib with production config
    SpiritSwap on 250
      - constructed with config
      - allowance and approval
      - native token allowance
      - validate tokens
      - submitOrder validations
      - parseOrder
      - orderProgress
      - isMarketOrder
      - market price dstAmount = srcAmount * (srcUsd/dstUsd)
      - limit price dstAmount = srcAmount * limitPrice
      - dst price with limit or market
      - percent above/below market
      - max possible chunk count
      - srcChunkAmount
      - totalChunks
      - fillDelayMillis for evenly distributed trades over maxDuration, with buffer of bid and extra buffer
      - dstMinAmountOut
      with order
        - submit order, getOrder
        - cancel order
        - status opened, canceled
        - status expired
        - status completed
        - getAllOrders
      helper functions
        - getToken
        - isNativeToken
        - isWrappedToken
        - isValidNetwork
        - maker balance
        - wrap native
        - unwrap to native
    SpookySwap on 250
      - constructed with config
      - allowance and approval
      - native token allowance
      - validate tokens
      - submitOrder validations
      - parseOrder
      - orderProgress
      - isMarketOrder
      - market price dstAmount = srcAmount * (srcUsd/dstUsd)
      - limit price dstAmount = srcAmount * limitPrice
      - dst price with limit or market
      - percent above/below market
      - max possible chunk count
      - srcChunkAmount
      - totalChunks
      - fillDelayMillis for evenly distributed trades over maxDuration, with buffer of bid and extra buffer
      - dstMinAmountOut
      with order
        - submit order, getOrder
        - cancel order
        - status opened, canceled
        - status expired
        - status completed
        - getAllOrders
      helper functions
        - getToken
        - isNativeToken
        - isWrappedToken
        - isValidNetwork
        - maker balance
        - wrap native
        - unwrap to native
    Pangolin on 43114
      - constructed with config
      - allowance and approval
      - native token allowance
      - validate tokens
      - submitOrder validations
      - parseOrder
      - orderProgress
      - isMarketOrder
      - market price dstAmount = srcAmount * (srcUsd/dstUsd)
      - limit price dstAmount = srcAmount * limitPrice
      - dst price with limit or market
      - percent above/below market
      - max possible chunk count
      - srcChunkAmount
      - totalChunks
      - fillDelayMillis for evenly distributed trades over maxDuration, with buffer of bid and extra buffer
      - dstMinAmountOut
      with order
        - submit order, getOrder
        - cancel order
        - status opened, canceled
        - status expired
        - status completed
        - getAllOrders
      helper functions
        - getToken
        - isNativeToken
        - isWrappedToken
        - isValidNetwork
        - maker balance
        - wrap native
        - unwrap to native
    QuickSwap on 137
      โœ“ constructed with config (0ms)
      โœ“ allowance and approval (612ms)
      โœ“ native token allowance (0ms)
      โœ“ validate tokens (426ms)
      โœ“ submitOrder validations (360ms)
      โœ“ parseOrder (3ms)
      โœ“ orderProgress (2ms)
      โœ“ isMarketOrder (1ms)
      โœ“ market price dstAmount = srcAmount * (srcUsd/dstUsd) (374ms)
      โœ“ limit price dstAmount = srcAmount * limitPrice (359ms)
      โœ“ dst price with limit or market (368ms)
      โœ“ percent above/below market (2ms)
      โœ“ max possible chunk count (225ms)
      โœ“ srcChunkAmount (2ms)
      โœ“ totalChunks (1ms)
      โœ“ fillDelayMillis for evenly distributed trades over maxDuration, with buffer of bid and extra buffer (1ms)
      โœ“ dstMinAmountOut (401ms)
      with order
        โœ“ submit order, getOrder (8ms)
        โœ“ cancel order (67ms)
        โœ“ status opened, canceled (72ms)
        โœ“ status expired (4ms)
        โœ“ status completed (5297ms)
        โœ“ getAllOrders (195ms)
      helper functions
        โœ“ getToken (184ms)
        โœ“ isNativeToken (184ms)
        โœ“ isWrappedToken (193ms)
        โœ“ isValidNetwork (0ms)
        โœ“ maker balance (740ms)
        โœ“ wrap native (388ms)
        โœ“ unwrap to native (430ms)

  maxgas: special test: large order history, paginated reads
โš ๏ธ gasUsed 13658457
    โœ“ taker biddable orders (39539ms)

  Paraswap
    SpiritSwap on 250
      - priceUsd
      - priceUsd for native token uses wToken
      - gas prices
      - find route with other exchanges
      - direct path for univ2 exchanges
      - direct path might be invalid
    SpookySwap on 250
      - priceUsd
      - priceUsd for native token uses wToken
      - gas prices
      - find route with other exchanges
      - direct path for univ2 exchanges
      - direct path might be invalid
    Pangolin on 43114
      - priceUsd
      - priceUsd for native token uses wToken
      - gas prices
      - find route with other exchanges
      - direct path for univ2 exchanges
      - direct path might be invalid
    QuickSwap on 137
      โœ“ priceUsd (3965ms)
      โœ“ priceUsd for native token uses wToken (903ms)
      โœ“ gas prices (464ms)
      โœ“ find route with other exchanges (1242ms)
      โœ“ direct path for univ2 exchanges (435ms)
      โœ“ direct path might be invalid (2009ms)

  Sanity
    โœ“ version (4ms)
    โœ“ maker creates ask order, emits event (51ms)
    โœ“ bid sets Bid fields, emits event (49ms)
    โœ“ fill sets Fill fields and clears the Bid, emits event (95ms)
    โœ“ cancel order, emits event (44ms)
    โœ“ order fully filled, emits event (166ms)
    History
      โœ“ find orders for maker (242ms)
      โœ“ makerOrders has mapping of order ids by maker address, to avoid relying on events (2ms)

  Taker
    โœ“ sanity (6ms)
    โœ“ onlyOwners (35ms)
    โœ“ bid & fill, gas rebate as dstToken without swapping (87ms)
    โœ“ gas rebate when dstToken == nativeToken, unwrap with or without swapping to native (2709ms)
    rescue
      โœ“ sends native token balance to caller (11ms)
      โœ“ sends ERC20 token balance to owner (459ms)

  TWAP
    โœ“ single chunk (93ms)
    โœ“ mutiple chunks (314ms)
    โœ“ last chunk may be partial amount (218ms)
    โœ“ outbid current bid within pending period (117ms)
    โœ“ outbid current bid within pending period same path and amount but lower fee (100ms)
    โœ“ enforce bids 1% better than previous (84ms)
    โœ“ clears stale unfilled bid after max bidding window = bidDelay * STALE_BID_DELAY_MUL (84ms)
    โœ“ supports market orders, english auction incentivizes best competitive price (177ms)
    โœ“ prevent winning the bid by manipulating exchange price (137ms)
    โœ“ slippage percent allows price slippage (182ms)
    โœ“ slippage percent at bid time is part of the bidding war (112ms)
    โœ“ native token output support (2087ms)
    prune stale invalid order
      โœ“ when no approval (38ms)
      โœ“ when no balance (41ms)

ยท--------------------------------------------|---------------------------|-------------|-----------------------------ยท
|            Solc version: 0.8.16            ยท  Optimizer enabled: true  ยท  Runs: 200  ยท  Block limit: 15000000 gas  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  Methods                                   ยท               30 gwei/gas               ยท       0.92 usd/matic        โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  Contract               ยท  Method          ยท  Min        ยท  Max        ยท  Avg        ยท  # calls      ยท  usd (avg)  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  ERC20                  ยท  approve         ยท      36162  ยท      58446  ยท      54377  ยท           96  ยท       0.00  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  ERC20                  ยท  transfer        ยท      51994  ยท      63552  ยท      62415  ยท          133  ยท       0.00  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  MockDeflationaryToken  ยท  approve         ยท      46260  ยท      46572  ยท      46370  ยท            6  ยท       0.00  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  MockExchange           ยท  setMockAmounts  ยท      32144  ยท      69156  ยท      51531  ยท           21  ยท       0.00  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  ParaswapExchange       ยท  swap            ยท          -  ยท          -  ยท     803462  ยท            1  ยท       0.02  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  Taker                  ยท  bid             ยท          -  ยท          -  ยท     304188  ยท            3  ยท       0.01  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  Taker                  ยท  fill            ยท     393720  ยท     528198  ยท     460959  ยท            2  ยท       0.01  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  Taker                  ยท  rescue          ยท      39476  ยท      77040  ยท      58258  ยท            2  ยท       0.00  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  TWAP                   ยท  ask             ยท     267987  ยท     353647  ยท     295055  ยท         5085  ยท       0.01  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  TWAP                   ยท  bid             ยท     115974  ยท     298071  ยท     267467  ยท           61  ยท       0.01  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  TWAP                   ยท  cancel          ยท      75989  ยท      87970  ยท      77334  ยท            9  ยท       0.00  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  TWAP                   ยท  fill            ยท     278906  ยท     360364  ยท     335952  ยท           26  ยท       0.01  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  TWAP                   ยท  prune           ยท      87103  ยท      90966  ยท      89035  ยท            2  ยท       0.00  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  UniswapV2Exchange      ยท  swap            ยท     167357  ยท     185913  ยท     176635  ยท            2  ยท       0.00  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  Deployments                               ยท                                         ยท  % of limit   ยท             โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  Lens                                      ยท          -  ยท          -  ยท    1299068  ยท        8.7 %  ยท       0.04  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  MockDeflationaryToken                     ยท          -  ยท          -  ยท     711309  ยท        4.7 %  ยท       0.02  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  MockExchange                              ยท          -  ยท          -  ยท     508251  ยท        3.4 %  ยท       0.01  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  ParaswapExchange                          ยท          -  ยท          -  ยท     624766  ยท        4.2 %  ยท       0.02  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  Taker                                     ยท          -  ยท          -  ยท    1275489  ยท        8.5 %  ยท       0.04  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  TWAP                                      ยท          -  ยท          -  ยท    3034281  ยท       20.2 %  ยท       0.08  โ”‚
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
|  UniswapV2Exchange                         ยท          -  ยท          -  ยท     722009  ยท        4.8 %  ยท       0.02  โ”‚
ยท--------------------------------------------|-------------|-------------|-------------|---------------|-------------ยท

  119 passing (6m)
  108 pending