From 2247d909b258ef08b4fe852b74c130f9df82a729 Mon Sep 17 00:00:00 2001 From: shafu Date: Thu, 26 Jun 2025 10:43:49 -0400 Subject: [PATCH] Delete deprecated files and functions --- Escrow-Repo-Spec.md | 42 ---- TAX_ENGINE_v2.md | 325 ------------------------------- audit.md | 18 -- lcov.info | 464 -------------------------------------------- 4 files changed, 849 deletions(-) delete mode 100644 Escrow-Repo-Spec.md delete mode 100644 TAX_ENGINE_v2.md delete mode 100644 audit.md delete mode 100644 lcov.info diff --git a/Escrow-Repo-Spec.md b/Escrow-Repo-Spec.md deleted file mode 100644 index f339f838..00000000 --- a/Escrow-Repo-Spec.md +++ /dev/null @@ -1,42 +0,0 @@ -### EscrowRepo v2 — Quick Reference - -**What it is** -Repository "bank accounts". - ---- - -#### Roles - -- **Owner (Merit Systems)** – sets fee, whitelist, signer; signs EIP-712 messages for new repos/accounts. -- **Root** – controls a `(repoId, instanceId)`; deposits claims, can reclaim, authorizes depositors. -- **Funder** – anyone calling `fund()`. -- **Recipient** – pulls their claim after being authorised via EIP-712 signature. -- **Signer** – off-chain backend that issues EIP-712 signatures to enable claiming. -- **Distributors** – addresses authorized by repo admin to call `deposit()` functions. - ---- - -#### Repo & Account Creation - -**Repos** are created via `addRepo()` with owner's EIP-712 signature: - -- First account (accountId=0) is automatically created for the specified admin -- Additional accounts can be created via `addAccount()` (also requires owner signature) - -Each account within a repo: - -- Has its own admin -- Maintains separate pool balances, fundings, and claims -- Operates independently within the same repo - ---- - -#### Token Journey - -| Step | Call | What happens | -| ---------------------- | -------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | -| 1. **Fund** | `fund()` | Tokens sent in ➜ fee (≤10%) to `feeRecipient`; net added to `_balance`. | -| 2. **Deposit** | `deposit()` / `batchDeposit()` | Admin or authorized depositor earmarks **amount** & `deadline` for recipient → new **Claim** record (funds stay in contract). | -| 3. **Claim** | `claim()` / `batchClaim()` | Recipient proves `canClaim=true` (Signer EIP-712 signature). If before `deadline`, tokens sent and claim → _Claimed_. | -| 4. **Reclaim fund** | `reclaimFund()` | If account has no active deposits, admin withdraws unused pool balance. | -| 5. **Reclaim deposit** | `reclaimDeposit()` / `batchReclaimDeposit()` | After `deadline`, admin returns expired claim to pool (status → _Reclaimed_). | diff --git a/TAX_ENGINE_v2.md b/TAX_ENGINE_v2.md deleted file mode 100644 index 1b331e21..00000000 --- a/TAX_ENGINE_v2.md +++ /dev/null @@ -1,325 +0,0 @@ -What do we need: - -## For every User (Merit Account) - -- All incoming payments (claimed, reclaimed) -- All outgoing payments (claimed, reclaimed) - -- Merit Balance - - - All claimed incoming Payments - - All claimable incoming Payments - -- Merit Repo Balance - - - All Funded Amounts - - Minus outgoing payments - - Plus reclaimed repo payments - -- Payments - - - From a Repo (repoId, instanceId) - - From a Sender (githubId/address) - -- Meta Level / Batches -- We need to indicate if the Batch is FromRepo/FromSender - -### Tax Engine - -- initRepo signature route -- claim signature route - -### Terminal - -### Indexer - -Tables: - -Batches: - -- batchId (primary key) -- batchType (DistributedFromRepo, DistributedFromSender, Claimed, ReclaimedRepoDistributions) -- repoId (nullable - only for repo batches) -- accountId (nullable - only for repo batches) -- initiator (address who created the batch) -- recipient (nullable - only for claim batches) -- timestamp -- data - -FundedRepo: - -- repoId -- accountId -- token -- sender -- amount -- data - -DistributedFromRepoBatch: - -- batchId (primary key) -- repoId -- accountId -- distributionIds (array of distribution IDs in this batch) -- data - -DistributedFromRepo: - -- distributionId (primary key) -- batchId (foreign key -> DistributedFromRepoBatch.batchId) -- recipient -- token -- amount -- claimDeadline - -DistributedFromSenderBatch: - -- batchId (primary key) -- distributionIds (array of distribution IDs in this batch) -- data - -DistributedFromSender: - -- distributionId (primary key) -- batchId (foreign key -> DistributedFromSenderBatch.batchId) -- payer -- recipient -- token -- amount -- claimDeadline - -ClaimedBatch: - -- batchId (primary key) -- distributionIds (array of distribution IDs in this batch) -- recipient -- data - -Claimed: - -- distributionId (primary key) -- batchId (foreign key -> ClaimedBatch.batchId) -- recipient -- amount -- fee - -ReclaimedRepoFunds: - -- repoId -- accountId -- admin -- amount - -ReclaimedRepoDistributionsBatch: - -- batchId (primary key) -- repoId -- accountId -- distributionIds (array of distribution IDs in this batch) -- data - -ReclaimedRepoDistribution: - -- distributionId (primary key) -- batchId (foreign key -> ReclaimedRepoDistributionsBatch.batchId) -- admin -- amount - -Relationships: - -- Each batch table (DistributedFromRepoBatch, DistributedFromSenderBatch, ClaimedBatch, ReclaimedRepoDistributionsBatch) contains a distributionIds array that lists all distribution IDs belonging to that batch -- Each distribution table (DistributedFromRepo, DistributedFromSender, Claimed, ReclaimedRepoDistribution) has a batchId that references its parent batch - -Notes on the Indexer: - -- we still need the reclaim logic we had before but we are going to implement this in pure sql - -### Tax Engine Routes - -1. Signature Routes: - - - `GET /init-repo/signature` - - - Returns a signed message for initializing a repo with admins - - Parameters: repoId, accountId, admins (array), signatureDeadline - - Returns: { signature, message } - - - `GET /claim/signature` - - Returns a signed message for claiming distributions - - Parameters: distributionIds (array), recipient, signatureDeadline - - Returns: { signature, message } - -2. Query Routes: - - **Contract-Based Routes (Current State):** - - - `GET /repo/:repoId/:accountId/admins` - - - Returns list of repo admins (from contract) - - - `GET /repo/:repoId/:accountId/distributors` - - - Returns list of repo distributors (from contract) - - - `GET /repo/:repoId/:accountId/exists` - - - Returns whether repo account is initialized (from contract) - - - `GET /repo/:repoId/:accountId/balance/:token` - - - Returns repo balance for specific token (from contract) - - - `GET /repo/:repoId/:accountId/can-distribute/:address` - - - Returns whether address can distribute from repo (from contract) - - - `GET /distribution/:distributionId` - - - Returns full distribution details (from contract) - - - `GET /tokens/whitelisted` - - - Returns list of whitelisted tokens (from contract) - - - `GET /config` - - - Returns system config (fee, batchLimit, feeRecipient, etc.) (from contract) - - - `GET /nonce/recipient/:address` - - Returns current nonce for recipient (from contract) - - **Indexer-Based Routes (Historical Events):** - - - `GET /funding/repo/:repoId/:accountId` - - - Returns all funding transactions for a repo (from FundedRepo table) - - - `GET /funding/by-sender/:address` - - - Returns all funding transactions made by a specific sender (from FundedRepo table) - - - `GET /funding/recent` - - - Returns recent funding transactions across all repos (from FundedRepo table) - - - `GET /batch/:batchId` - - - Returns batch details with all items (from batch tables) - - - `GET /batches/repo/:repoId/:accountId` - - - Returns all batches for a repo (from DistributedFromRepoBatch, ReclaimedRepoDistributionsBatch) - - - `GET /batches/sender/:address` - - - Returns all batches for a sender (from DistributedFromSenderBatch by payer) - - - `GET /batches/recipient/:githubId` - - - Returns all claim batches for a recipient (from ClaimedBatch) - - - `GET /batches/recent` - - - Returns recent batches across the system (from all batch tables) - - - `GET /reclaims/repo-funds/:repoId/:accountId` - - - Returns history of repo fund reclaims (from ReclaimedRepoFunds) - - - `GET /reclaims/repo-distributions/:repoId/:accountId` - - - Returns history of repo distribution reclaims (from ReclaimedRepoDistributionsBatch) - - - `GET /reclaims/by-admin/:address` - - - Returns all reclaims performed by a specific admin (from ReclaimedRepoFunds, ReclaimedRepoDistribution) - - - `GET /fees/collected` - - - Returns total fees collected by the system (from Claimed table) - - - `GET /fees/by-token/:token` - - - Returns fees collected for a specific token (from Claimed table) - - - `GET /fees/from-user/:githubId` - - Returns total fees paid by a specific user through claims (from Claimed table) - - **Hybrid Routes (Contract + Indexer):** - - - `GET /balance/merit/:githubId` - - - Returns Merit Balance (claimed from indexer + claimable from contract) - - - `GET /payments/incoming/:githubId` - - - Returns all incoming payments (from DistributedFromRepo/DistributedFromSender tables) - - - `GET /payments/outgoing/:githubId` - - - Returns all outgoing payments (from DistributedFromSender by payer + repo distributions where user is admin) - - - `GET /distributions/claimable/:githubId` - - - Returns all claimable distributions for recipient (contract state filtered by recipient) - - - `GET /distributions/expired/:githubId` - - - Returns all expired distributions for recipient (contract state filtered by recipient + deadline) - - - `GET /distributions/to/:githubId` - - - Returns ALL distributions sent to recipient (from DistributedFromRepo/DistributedFromSender tables) - - - `GET /distributions/to/:githubId/claimed` - - - Returns claimed distributions for recipient (from Claimed table) - - - `GET /distributions/to/:githubId/unclaimed` - - - Returns unclaimed distributions for recipient (contract state - claimed) - - - `GET /distributions/repo/:repoId/:accountId` - - - Returns all distributions from a repo (from DistributedFromRepo table) - - - `GET /distributions/sender/:address` - - - Returns all distributions from a sender (from DistributedFromSender by payer) - - - `GET /batches/paid-to/:githubId` - - - Returns all batches containing distributions paid TO recipient (from DistributedFromRepo/DistributedFromSender tables) - - - `GET /batches/paid-to/:githubId/unclaimed` - - - Returns batches with unclaimed distributions (indexer + contract state) - - - `GET /batches/paid-to/:githubId/claimed` - - - Returns batches where recipient has claimed distributions (from ClaimedBatch) - - - `GET /transactions/user/:githubId` - - - Returns complete transaction history (all relevant tables + contract state) - - - `GET /transactions/repo/:repoId/:accountId` - - - Returns complete repo transaction history (all relevant tables for the repo) - - - `GET /transactions/recent` - - Returns recent transactions across the entire system (all tables) - - **Admin Dashboard Routes:** - - - `GET /admin/repo/:repoId/:accountId/overview` - - Returns complete repo overview (contract state + indexer summaries) - -Each signature route will: - -- Validate the request parameters -- Check permissions -- Generate and sign the appropriate message -- Return the signature and message for the frontend to submit to the blockchain - -The indexer will process the blockchain transactions to update the database state. diff --git a/audit.md b/audit.md deleted file mode 100644 index 3d6c1001..00000000 --- a/audit.md +++ /dev/null @@ -1,18 +0,0 @@ -Notes for Auditors - -- Accepted ERC-20 Types: wETH, USDC -- Chains: Base -- Addresses can only claim if whitelisted by us with the signature -- Instant reclaimability is intentional -- All functions are mostly called by smart wallets (privy) -- Anyone claiming/reclaiming distributions is acceptable behavior for us -- Distributors remain authorized even after admin changes (by design) -- No ability to remove whitelisted tokens is intentional - prevents us from pausing the contract -- Fee mechanism has 10% maximum cap (MAX_FEE = 1,000 basis points) -- Batch operations are limited by configurable batchLimit to prevent gas issues -- EIP-712 signatures used for claim authorization and admin initialization -- Nonce-based replay protection for both recipient claims and owner operations -- Two distribution types: Repo (from deposited funds) and Solo (direct payment) -- Expired distributions can be reclaimed - repo funds return to account balance, solo funds return to original payer -- Contract tracks separate balances per repoId/accountId combination -- hasDistributions flag prevents fund reclaim once any distributions have occurred diff --git a/lcov.info b/lcov.info deleted file mode 100644 index 3302fa13..00000000 --- a/lcov.info +++ /dev/null @@ -1,464 +0,0 @@ -TN: -SF:script/Deploy.Core.s.sol -DA:11,257 -FN:11,Deploy.deploy -FNDA:257,Deploy.deploy -DA:24,257 -DA:25,257 -DA:33,257 -DA:34,257 -DA:36,257 -DA:37,257 -DA:39,257 -DA:41,257 -DA:49,257 -FNF:1 -FNH:1 -LF:10 -LH:10 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/Escrow.sol -DA:106,26 -FN:106,Escrow.onlyRepoAdmin -FNDA:26,Escrow.onlyRepoAdmin -DA:107,26 -BRDA:107,0,0,3 -BRDA:107,0,1,310 -DA:114,789 -FN:114,Escrow.constructor -FNDA:789,Escrow.constructor -DA:121,789 -BRDA:121,1,0,260 -BRDA:121,1,1,529 -DA:123,529 -DA:124,529 -DA:125,529 -DA:126,529 -DA:127,529 -DA:128,529 -DA:130,529 -DA:131,314 -BRDA:131,2,0,1 -BRDA:131,2,1,313 -DA:132,313 -DA:139,1024 -FN:139,Escrow.initRepo -FNDA:1024,Escrow.initRepo -DA:148,1024 -DA:150,1024 -BRDA:150,3,0,1 -BRDA:150,3,1,1023 -DA:151,1023 -BRDA:151,4,0,1 -BRDA:151,4,1,1022 -DA:152,1022 -BRDA:152,5,0,1 -BRDA:152,5,1,1021 -DA:153,1021 -BRDA:153,6,0,1 -BRDA:153,6,1,1020 -DA:155,1020 -DA:169,1020 -BRDA:169,7,0,10 -BRDA:169,7,1,1008 -DA:171,1008 -DA:172,1008 -DA:174,1008 -DA:175,4936 -BRDA:175,8,0,1 -BRDA:175,8,1,4935 -DA:176,4935 -DA:177,4935 -DA:184,1131 -FN:184,Escrow.fundRepo -FNDA:1131,Escrow.fundRepo -DA:191,1131 -BRDA:191,9,0,1 -BRDA:191,9,1,1130 -DA:192,1130 -BRDA:192,10,0,1 -BRDA:192,10,1,1129 -DA:194,1129 -DA:196,1127 -DA:198,1127 -DA:204,3771 -FN:204,Escrow.distributeFromRepo -FNDA:3771,Escrow.distributeFromRepo -DA:213,3771 -BRDA:213,11,0,1 -BRDA:213,11,1,3770 -DA:215,3770 -DA:217,3770 -DA:218,3770 -DA:219,3770 -BRDA:219,12,0,1 -BRDA:219,12,1,3769 -DA:221,3769 -DA:222,3769 -DA:224,3769 -DA:225,4034 -DA:227,4034 -DA:228,4034 -BRDA:228,13,0,2 -BRDA:228,13,1,4032 -DA:229,4032 -DA:231,4032 -DA:232,4025 -DA:234,4025 -DA:238,4025 -DA:240,4025 -DA:249,3760 -DA:253,2993 -FN:253,Escrow.distributeFromSender -FNDA:2993,Escrow.distributeFromSender -DA:260,2993 -BRDA:260,14,0,1 -BRDA:260,14,1,2992 -DA:262,2992 -DA:263,2992 -DA:265,2992 -DA:266,3755 -DA:267,3755 -DA:268,3753 -DA:269,3744 -DA:271,3744 -DA:280,2981 -DA:284,7785 -FN:284,Escrow._createDistribution -FNDA:7785,Escrow._createDistribution -DA:291,7785 -BRDA:291,15,0,2 -BRDA:291,15,1,7783 -DA:292,7783 -BRDA:292,16,0,2 -BRDA:292,16,1,7781 -DA:293,7781 -BRDA:293,17,0,2 -BRDA:293,17,1,7779 -DA:294,7779 -BRDA:294,18,0,2 -BRDA:294,18,1,7777 -DA:297,7777 -DA:298,7777 -BRDA:298,19,0,8 -BRDA:298,19,1,7769 -DA:300,7769 -DA:302,7769 -DA:318,817 -FN:318,Escrow.claim -FNDA:817,Escrow.claim -DA:325,817 -BRDA:325,20,0,1 -BRDA:325,20,1,816 -DA:326,816 -BRDA:326,21,0,1 -BRDA:326,21,1,815 -DA:327,815 -BRDA:327,22,0,1 -BRDA:327,22,1,814 -DA:329,814 -BRDA:329,23,0,6 -BRDA:329,23,1,808 -DA:344,808 -DA:346,808 -DA:347,1940 -DA:348,1940 -DA:350,1940 -BRDA:350,24,0,1 -BRDA:350,24,1,1939 -DA:351,1939 -BRDA:351,25,0,2 -BRDA:351,25,1,1937 -DA:352,1937 -BRDA:352,26,0,2 -BRDA:352,26,1,1935 -DA:353,1935 -BRDA:353,27,0,2 -BRDA:353,27,1,1933 -DA:355,1933 -DA:357,1933 -DA:359,1933 -BRDA:359,28,0,- -DA:360,0 -DA:362,1933 -DA:364,1933 -BRDA:364,29,0,1920 -DA:365,1933 -DA:367,1933 -DA:369,801 -DA:375,531 -FN:375,Escrow.reclaimFund -FNDA:531,Escrow.reclaimFund -DA:384,530 -BRDA:384,30,0,1 -BRDA:384,30,1,529 -DA:385,529 -BRDA:385,31,0,1 -BRDA:385,31,1,528 -DA:386,528 -BRDA:386,32,0,1 -BRDA:386,32,1,527 -DA:388,527 -DA:389,527 -BRDA:389,33,0,260 -BRDA:389,33,1,267 -DA:391,267 -DA:392,267 -DA:394,267 -DA:400,266 -FN:400,Escrow.reclaimRepo -FNDA:266,Escrow.reclaimRepo -DA:401,266 -BRDA:401,34,0,1 -BRDA:401,34,1,265 -DA:403,265 -DA:404,524 -DA:405,524 -DA:407,524 -BRDA:407,35,0,1 -BRDA:407,35,1,523 -DA:408,523 -BRDA:408,36,0,1 -BRDA:408,36,1,522 -DA:409,522 -BRDA:409,37,0,1 -BRDA:409,37,1,521 -DA:410,521 -BRDA:410,38,0,1 -BRDA:410,38,1,520 -DA:412,520 -DA:414,520 -DA:415,520 -DA:417,520 -DA:419,261 -DA:425,786 -FN:425,Escrow.reclaimSolo -FNDA:786,Escrow.reclaimSolo -DA:426,786 -BRDA:426,39,0,1 -BRDA:426,39,1,785 -DA:428,785 -DA:429,2181 -DA:430,2181 -DA:432,2181 -BRDA:432,40,0,1 -BRDA:432,40,1,2180 -DA:433,2180 -BRDA:433,41,0,2 -BRDA:433,41,1,2178 -DA:434,2178 -BRDA:434,42,0,2 -BRDA:434,42,1,2176 -DA:435,2176 -BRDA:435,43,0,1 -BRDA:435,43,1,2175 -DA:437,2175 -DA:438,2175 -DA:440,2175 -DA:442,779 -DA:448,13 -FN:448,Escrow.addWhitelistedToken -FNDA:13,Escrow.addWhitelistedToken -DA:452,9 -BRDA:452,44,0,2 -BRDA:452,44,1,7 -DA:453,7 -DA:456,1353 -FN:456,Escrow.setFee -FNDA:1353,Escrow.setFee -DA:460,1348 -BRDA:460,45,0,1 -BRDA:460,45,1,1347 -DA:461,1347 -DA:464,10 -FN:464,Escrow.setFeeRecipient -FNDA:10,Escrow.setFeeRecipient -DA:468,6 -DA:471,10 -FN:471,Escrow.setSigner -FNDA:10,Escrow.setSigner -DA:475,6 -DA:478,271 -FN:478,Escrow.setBatchLimit -FNDA:271,Escrow.setBatchLimit -DA:482,267 -BRDA:482,46,0,1 -BRDA:482,46,1,266 -DA:483,266 -DA:484,266 -DA:490,26 -FN:490,Escrow.addAdmins -FNDA:26,Escrow.addAdmins -DA:494,23 -BRDA:494,47,0,2 -BRDA:494,47,1,21 -DA:495,21 -BRDA:495,48,0,1 -BRDA:495,48,1,20 -DA:497,20 -DA:498,20 -DA:499,534 -DA:500,534 -BRDA:500,49,0,1 -BRDA:500,49,1,533 -DA:501,533 -BRDA:501,50,0,531 -DA:502,531 -DA:507,15 -FN:507,Escrow.removeAdmins -FNDA:15,Escrow.removeAdmins -DA:511,14 -BRDA:511,51,0,2 -BRDA:511,51,1,12 -DA:512,12 -BRDA:512,52,0,1 -BRDA:512,52,1,11 -DA:514,11 -DA:517,11 -BRDA:517,53,0,4 -BRDA:517,53,1,7 -DA:519,7 -DA:520,11 -DA:521,11 -BRDA:521,54,0,9 -DA:522,9 -DA:527,313 -FN:527,Escrow.addDistributors -FNDA:313,Escrow.addDistributors -DA:531,310 -BRDA:531,55,0,1 -BRDA:531,55,1,309 -DA:533,309 -DA:534,309 -DA:535,1996 -DA:536,1996 -BRDA:536,56,0,1 -BRDA:536,56,1,1995 -DA:537,1995 -BRDA:537,57,0,1993 -DA:538,1993 -DA:539,1993 -DA:544,268 -FN:544,Escrow.removeDistributors -FNDA:268,Escrow.removeDistributors -DA:548,266 -BRDA:548,58,0,1 -BRDA:548,58,1,265 -DA:550,265 -DA:551,265 -DA:552,915 -DA:553,915 -BRDA:553,59,0,913 -DA:554,913 -DA:562,530 -FN:562,Escrow._domainSeparator -FNDA:530,Escrow._domainSeparator -DA:563,530 -DA:573,1840 -FN:573,Escrow.DOMAIN_SEPARATOR -FNDA:1840,Escrow.DOMAIN_SEPARATOR -DA:574,3674 -DA:580,274 -FN:580,Escrow.getAllAdmins -FNDA:274,Escrow.getAllAdmins -DA:585,274 -DA:586,274 -DA:587,274 -DA:588,274 -DA:589,4701 -DA:593,5226 -FN:593,Escrow.getIsAuthorizedAdmin -FNDA:5226,Escrow.getIsAuthorizedAdmin -DA:598,5226 -DA:601,2833 -FN:601,Escrow.getIsAuthorizedDistributor -FNDA:2833,Escrow.getIsAuthorizedDistributor -DA:606,2833 -DA:609,32 -FN:609,Escrow.canDistribute -FNDA:32,Escrow.canDistribute -DA:614,32 -DA:617,2 -FN:617,Escrow.getAllDistributors -FNDA:2,Escrow.getAllDistributors -DA:622,2 -DA:623,2 -DA:624,2 -DA:625,2 -DA:626,502 -DA:630,1831 -FN:630,Escrow.getAccountBalance -FNDA:1831,Escrow.getAccountBalance -DA:635,1831 -DA:638,2 -FN:638,Escrow.getAccountHasDistributions -FNDA:2,Escrow.getAccountHasDistributions -DA:643,2 -DA:646,0 -FN:646,Escrow.getAccountExists -FNDA:0,Escrow.getAccountExists -DA:651,0 -DA:654,3499 -FN:654,Escrow.getDistribution -FNDA:3499,Escrow.getDistribution -DA:659,3499 -DA:660,3499 -BRDA:660,60,0,- -BRDA:660,60,1,3499 -DA:661,3499 -DA:664,0 -FN:664,Escrow.getDistributionRepo -FNDA:0,Escrow.getDistributionRepo -DA:669,0 -BRDA:669,61,0,- -BRDA:669,61,1,- -DA:670,0 -BRDA:670,62,0,- -BRDA:670,62,1,- -DA:671,0 -DA:674,4 -FN:674,Escrow.isSoloDistribution -FNDA:4,Escrow.isSoloDistribution -DA:679,4 -DA:680,4 -DA:683,5 -FN:683,Escrow.getAllWhitelistedTokens -FNDA:5,Escrow.getAllWhitelistedTokens -DA:688,5 -DA:689,5 -DA:690,5 -DA:693,61 -FN:693,Escrow.isTokenWhitelisted -FNDA:61,Escrow.isTokenWhitelisted -DA:698,61 -FNF:35 -FNH:33 -LF:223 -LH:216 -BRF:120 -BRH:114 -end_of_record -TN: -SF:test/00_Escrow.t.sol -DA:26,257 -FN:26,Base_Test.setUp -FNDA:257,Base_Test.setUp -DA:27,257 -DA:28,257 -DA:29,257 -DA:37,257 -DA:38,257 -DA:41,0 -FN:41,Base_Test.expectRevert -FNDA:0,Base_Test.expectRevert -DA:42,643 -FNF:2 -FNH:1 -LF:8 -LH:7 -BRF:0 -BRH:0 -end_of_record