tapimo 0.8.0 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/dist/App.d.ts +2095 -2111
  2. package/dist/App.d.ts.map +1 -1
  3. package/dist/App.js +0 -1
  4. package/dist/App.js.map +1 -1
  5. package/dist/admin/apps/verified-tokens.d.ts +166 -166
  6. package/dist/apps/data/App.d.ts +4084 -3845
  7. package/dist/apps/data/App.d.ts.map +1 -1
  8. package/dist/apps/data/routes/activities.d.ts +270 -270
  9. package/dist/apps/data/routes/addresses.d.ts +248 -17
  10. package/dist/apps/data/routes/addresses.d.ts.map +1 -1
  11. package/dist/apps/data/routes/balances.d.ts +272 -2
  12. package/dist/apps/data/routes/balances.d.ts.map +1 -1
  13. package/dist/apps/data/routes/balances.js +114 -2
  14. package/dist/apps/data/routes/balances.js.map +1 -1
  15. package/dist/apps/data/routes/blocks.d.ts +123 -123
  16. package/dist/apps/data/routes/earn.d.ts +65 -3
  17. package/dist/apps/data/routes/earn.d.ts.map +1 -1
  18. package/dist/apps/data/routes/earn.js +259 -14
  19. package/dist/apps/data/routes/earn.js.map +1 -1
  20. package/dist/apps/data/routes/rpc.d.ts +31 -31
  21. package/dist/apps/data/routes/tokens.d.ts +454 -454
  22. package/dist/apps/data/routes/transfers.d.ts +81 -81
  23. package/dist/apps/funding/App.d.ts +40 -299
  24. package/dist/apps/funding/App.d.ts.map +1 -1
  25. package/dist/apps/funding/App.js +20 -5
  26. package/dist/apps/funding/App.js.map +1 -1
  27. package/dist/apps/funding/routes/deposit-addresses.d.ts +43 -434
  28. package/dist/apps/funding/routes/deposit-addresses.d.ts.map +1 -1
  29. package/dist/apps/funding/routes/deposit-addresses.js +21 -103
  30. package/dist/apps/funding/routes/deposit-addresses.js.map +1 -1
  31. package/dist/apps/funding/routes/quotes.d.ts +89 -89
  32. package/dist/apps/funding/routes/transfers.js +5 -5
  33. package/dist/apps/funding/routes/transfers.js.map +1 -1
  34. package/dist/apps/management/routes/invitations.d.ts +134 -134
  35. package/dist/apps/management/routes/orgs.d.ts +98 -98
  36. package/dist/apps/management/routes/verified-token-requests.d.ts +83 -83
  37. package/dist/apps/mpp/App.d.ts +44 -44
  38. package/dist/db/Db.d.ts.map +1 -1
  39. package/dist/db/Db.js +8 -0
  40. package/dist/db/Db.js.map +1 -1
  41. package/dist/db/tables/fundingDeposits.d.ts +18 -1
  42. package/dist/db/tables/fundingDeposits.d.ts.map +1 -1
  43. package/dist/db/tables/fundingDeposits.js +46 -2
  44. package/dist/db/tables/fundingDeposits.js.map +1 -1
  45. package/dist/internal/Auth.d.ts +4 -0
  46. package/dist/internal/Auth.d.ts.map +1 -1
  47. package/dist/internal/Auth.js +11 -2
  48. package/dist/internal/Auth.js.map +1 -1
  49. package/dist/internal/funding/Provider.d.ts +6 -6
  50. package/dist/internal/funding/Provider.d.ts.map +1 -1
  51. package/dist/internal/funding/Reconciliation.d.ts.map +1 -1
  52. package/dist/internal/funding/Reconciliation.js +101 -16
  53. package/dist/internal/funding/Reconciliation.js.map +1 -1
  54. package/dist/internal/funding/providers/relay.d.ts.map +1 -1
  55. package/dist/internal/funding/providers/relay.js +6 -2
  56. package/dist/internal/funding/providers/relay.js.map +1 -1
  57. package/package.json +1 -1
  58. package/src/App.test.ts +32 -0
  59. package/src/App.ts +4 -1
  60. package/src/Client.test-d.ts +56 -33
  61. package/src/apps/composition.test.ts +39 -10
  62. package/src/apps/data/routes/balances.test.ts +42 -0
  63. package/src/apps/data/routes/balances.ts +218 -85
  64. package/src/apps/data/routes/earn.test.ts +89 -9
  65. package/src/apps/data/routes/earn.ts +355 -14
  66. package/src/apps/funding/App.ts +20 -5
  67. package/src/apps/funding/routes/deposit-addresses.test.ts +43 -22
  68. package/src/apps/funding/routes/deposit-addresses.ts +34 -117
  69. package/src/apps/funding/routes/transfers.test.ts +6 -25
  70. package/src/apps/funding/routes/transfers.ts +5 -5
  71. package/src/db/Db.ts +9 -0
  72. package/src/db/tables/fundingDeposits.test.ts +101 -0
  73. package/src/db/tables/fundingDeposits.ts +71 -2
  74. package/src/internal/Auth.test.ts +28 -0
  75. package/src/internal/Auth.ts +15 -1
  76. package/src/internal/funding/Provider.ts +4 -4
  77. package/src/internal/funding/Reconciliation.test.ts +292 -54
  78. package/src/internal/funding/Reconciliation.ts +160 -53
  79. package/src/internal/funding/SourceObservation.test.ts +2 -2
  80. package/src/internal/funding/providers/relay.ts +7 -2
@@ -17,6 +17,7 @@ import * as Evidence from './Evidence.js'
17
17
  import * as Provider from './Provider.js'
18
18
  import * as Reconciliation from './Reconciliation.js'
19
19
  import * as Relay from './providers/relay.js'
20
+ import * as SourceObservation from './SourceObservation.js'
20
21
 
21
22
  const db = TestApp.database()
22
23
  const transferTopic = AbiEvent.getSelector('event Transfer(address,address,uint256)')
@@ -1506,7 +1507,7 @@ describe('createTracker', () => {
1506
1507
  }
1507
1508
  })
1508
1509
 
1509
- test('completes subsidized Relay delivery from authenticated chain evidence', async () => {
1510
+ test('completes chain-detected Relay delivery before provider attribution', async () => {
1510
1511
  const route = TestFunding.transferSnapshot()
1511
1512
  const ambiguousOrderId = `0x${'3d'.repeat(32)}`
1512
1513
  const ambiguousSweepTransactionHash = `0x${'3e'.repeat(32)}`
@@ -1548,8 +1549,10 @@ describe('createTracker', () => {
1548
1549
  histogram() {},
1549
1550
  })
1550
1551
  const rpcMethods: string[] = []
1551
- let correlated = false
1552
+ let ambiguous = true
1553
+ let correlateDestination = false
1552
1554
  let delivered = false
1555
+ let indexed = false
1553
1556
  const server = await TestRelay.createServer(async (request, response) => {
1554
1557
  if (request.method === 'GET') {
1555
1558
  const url = new URL(request.url ?? '/', server.url)
@@ -1571,26 +1574,23 @@ describe('createTracker', () => {
1571
1574
  ],
1572
1575
  }
1573
1576
  : {
1574
- requests: [
1575
- {
1576
- createdAt: '2026-01-04T00:01:00.000Z',
1577
- data: { outTxs: [] },
1578
- depositAddress: { depositTxHash: sourceTransactionHash },
1579
- id: 'relay-observed-request',
1580
- ...(() => {
1581
- if (!correlated) return {}
1582
- return {
1577
+ requests: indexed
1578
+ ? [
1579
+ {
1580
+ createdAt: '2026-01-04T00:01:00.000Z',
1581
+ data: { outTxs: [] },
1582
+ depositAddress: { depositTxHash: sourceTransactionHash },
1583
+ id: 'relay-observed-request',
1583
1584
  protocol: {
1584
1585
  deposit: { origin: { depositor: refundAddress, depository } },
1585
1586
  orderId,
1586
1587
  solver: { address: solver },
1587
1588
  },
1588
- }
1589
- })(),
1590
- status: 'pending',
1591
- updatedAt: '2026-01-04T00:02:00.000Z',
1592
- },
1593
- ],
1589
+ status: 'pending',
1590
+ updatedAt: '2026-01-04T00:02:00.000Z',
1591
+ },
1592
+ ]
1593
+ : [],
1594
1594
  },
1595
1595
  ),
1596
1596
  )
@@ -1614,10 +1614,14 @@ describe('createTracker', () => {
1614
1614
  blockNumber: 0xf0,
1615
1615
  from: solver,
1616
1616
  hash: destinationTransactionHash,
1617
- input: AbiFunction.encodeData(
1618
- AbiFunction.from('function transfer(address recipient,uint256 amount)'),
1619
- [route.recipient as Address.Address, 1_000_000n],
1620
- ),
1617
+ input: (() => {
1618
+ const input = AbiFunction.encodeData(
1619
+ AbiFunction.from('function transfer(address recipient,uint256 amount)'),
1620
+ [route.recipient as Address.Address, 1_000_000n],
1621
+ )
1622
+ if (!correlateDestination) return input
1623
+ return Hex.concat(input, orderId as Hex.Hex)
1624
+ })(),
1621
1625
  to: route.destinationToken.address,
1622
1626
  })
1623
1627
  : rpcTransaction({
@@ -1657,15 +1661,19 @@ describe('createTracker', () => {
1657
1661
  const filter = parameter as { address?: string | undefined }
1658
1662
  if (filter.address?.toLowerCase() === depository.toLowerCase())
1659
1663
  return [
1660
- relayDepositLog({
1661
- amount: 1_000_000n,
1662
- blockNumber: 0x81,
1663
- depository,
1664
- from: refundAddress,
1665
- orderId: ambiguousOrderId,
1666
- token: route.sourceToken.address,
1667
- transactionHash: ambiguousSweepTransactionHash,
1668
- }),
1664
+ ...(ambiguous
1665
+ ? [
1666
+ relayDepositLog({
1667
+ amount: 1_000_000n,
1668
+ blockNumber: 0x81,
1669
+ depository,
1670
+ from: refundAddress,
1671
+ orderId: ambiguousOrderId,
1672
+ token: route.sourceToken.address,
1673
+ transactionHash: ambiguousSweepTransactionHash,
1674
+ }),
1675
+ ]
1676
+ : []),
1669
1677
  relayDepositLog({
1670
1678
  amount: 1_000_000n,
1671
1679
  blockNumber: 0x82,
@@ -1747,6 +1755,50 @@ describe('createTracker', () => {
1747
1755
  now: () => new Date('2026-01-04T00:03:00.000Z'),
1748
1756
  observation: { db },
1749
1757
  })
1758
+ if (!Provider.canObserveDepositAddressRequest(provider))
1759
+ throw new Error('Expected Relay delivery observation.')
1760
+ const ambiguousObservation = await provider.observeDepositAddressRequest(
1761
+ {
1762
+ address: depositAddress,
1763
+ destinationChain: route.destinationChain,
1764
+ destinationToken: route.destinationToken,
1765
+ recipient: route.recipient,
1766
+ refundAddress,
1767
+ source: { amount: '1000000', transactionHash: sourceTransactionHash },
1768
+ sourceChain: route.sourceChain,
1769
+ sourceToken: route.sourceToken,
1770
+ },
1771
+ new AbortController().signal,
1772
+ )
1773
+ ambiguous = false
1774
+ delivered = true
1775
+ const uncorrelatedObservation = await provider.observeDepositAddressRequest(
1776
+ {
1777
+ address: depositAddress,
1778
+ destinationChain: route.destinationChain,
1779
+ destinationToken: route.destinationToken,
1780
+ recipient: route.recipient,
1781
+ refundAddress,
1782
+ source: { amount: '1000000', transactionHash: sourceTransactionHash },
1783
+ sourceChain: route.sourceChain,
1784
+ sourceToken: route.sourceToken,
1785
+ },
1786
+ new AbortController().signal,
1787
+ )
1788
+ correlateDestination = true
1789
+ delivered = false
1790
+ const observed = await SourceObservation.observe(db, {
1791
+ addressId: address.id,
1792
+ amount: '1000000',
1793
+ chainId: route.sourceChain.id,
1794
+ now: new Date('2026-01-04T00:00:30.000Z'),
1795
+ recipient: depositAddress,
1796
+ sender: refundAddress,
1797
+ tokenAddress: route.sourceToken.address,
1798
+ transactionHash: sourceTransactionHash,
1799
+ transferIndex: 0,
1800
+ })
1801
+ if (observed.type === 'ignored') throw new Error('Expected source observation.')
1750
1802
  const tracker = Reconciliation.createTracker({
1751
1803
  db,
1752
1804
  dispatch: async (...parameters) => {
@@ -1757,25 +1809,30 @@ describe('createTracker', () => {
1757
1809
  providers: [provider],
1758
1810
  verifyTransfers: Evidence.createVerifier({ db }),
1759
1811
  })
1760
- const message = {
1812
+ const pending = await tracker.reconcile({
1761
1813
  addressId: address.id,
1762
- requestId: 'relay-observed-request',
1763
- trigger: 'webhook',
1814
+ trigger: 'chain',
1764
1815
  type: 'funding:deposit-address:reconcile',
1765
- } satisfies Provider.Webhook.receive.Dispatchable
1766
- const pending = await tracker.reconcile(message)
1767
- const [followUp] = dispatches
1768
- if (!followUp) throw new Error('Expected a delivery follow-up message.')
1769
- correlated = true
1816
+ })
1817
+ const [deliveryFollowUp] = dispatches
1818
+ if (!deliveryFollowUp) throw new Error('Expected a delivery follow-up message.')
1770
1819
  delivered = true
1771
- const completed = await tracker.reconcile(followUp[0])
1820
+ const completed = await tracker.reconcile(deliveryFollowUp[0])
1821
+ const completedRecord = await FundingDeposits.get(db, observed.record.id)
1822
+ const [, providerFollowUp] = dispatches
1823
+ if (!providerFollowUp) throw new Error('Expected a provider follow-up message.')
1824
+ indexed = true
1825
+ const attributed = await tracker.reconcile(providerFollowUp[0])
1772
1826
  const [record] = await FundingDeposits.listBySourceTransaction(db, {
1773
1827
  depositAddressId: address.id,
1774
1828
  sourceTransactionHash,
1775
1829
  })
1776
1830
 
1777
1831
  expect({
1832
+ ambiguousObservation,
1833
+ attributed,
1778
1834
  completed,
1835
+ completedRecord,
1779
1836
  counts,
1780
1837
  dispatches: dispatches.map(([message, dispatchOptions]) => [
1781
1838
  { ...message, addressId: '<address-id>' },
@@ -1784,6 +1841,8 @@ describe('createTracker', () => {
1784
1841
  pending,
1785
1842
  record,
1786
1843
  rpcMethods,
1844
+ sourceObservation: observed.type,
1845
+ uncorrelatedObservation,
1787
1846
  }).toMatchInlineSnapshot(
1788
1847
  {
1789
1848
  record: {
@@ -1793,14 +1852,144 @@ describe('createTracker', () => {
1793
1852
  snapshot: { depositAddressId: expect.any(String) },
1794
1853
  updatedAt: expect.any(String),
1795
1854
  },
1855
+ completedRecord: {
1856
+ createdAt: expect.any(String),
1857
+ depositAddressId: expect.any(String),
1858
+ id: expect.any(String),
1859
+ snapshot: { depositAddressId: expect.any(String) },
1860
+ updatedAt: expect.any(String),
1861
+ },
1796
1862
  },
1797
1863
  `
1798
1864
  {
1865
+ "ambiguousObservation": {
1866
+ "type": "pending",
1867
+ },
1868
+ "attributed": {
1869
+ "created": 0,
1870
+ "type": "completed",
1871
+ "updated": 1,
1872
+ },
1799
1873
  "completed": {
1800
1874
  "created": 0,
1801
1875
  "type": "completed",
1802
1876
  "updated": 1,
1803
1877
  },
1878
+ "completedRecord": {
1879
+ "createdAt": Any<String>,
1880
+ "depositAddressId": Any<String>,
1881
+ "detectionTrigger": "chain",
1882
+ "environment": "production",
1883
+ "id": Any<String>,
1884
+ "orgId": "org_delivery_observation",
1885
+ "pollObservedAt": null,
1886
+ "projectId": null,
1887
+ "providerOutputAmount": {
1888
+ "baseUnits": "1000000",
1889
+ "currency": "USD",
1890
+ "decimals": 6,
1891
+ "formatted": "1",
1892
+ },
1893
+ "providerOutputToken": {
1894
+ "address": "0x20c000000000000000000000b9537d11c60e8b50",
1895
+ "currency": "USD",
1896
+ "decimals": 6,
1897
+ "name": "Bridged USDC (Stargate)",
1898
+ "standard": "TIP-20",
1899
+ "symbol": "USDC.e",
1900
+ "tokenKey": "eip155:4217/erc20:0x20c000000000000000000000b9537d11c60e8b50",
1901
+ "verified": true,
1902
+ },
1903
+ "providerRequestId": null,
1904
+ "providerRequestIds": [],
1905
+ "providerState": {
1906
+ "relay": {
1907
+ "destinationObservedAt": "2026-01-04T00:03:00.000Z",
1908
+ "orderId": "0x3434343434343434343434343434343434343434343434343434343434343434",
1909
+ "sourceDepository": "0x3232323232323232323232323232323232323232",
1910
+ "sourceObservedAt": "2026-01-04T00:03:00.000Z",
1911
+ "sourceSweepTransactionHash": "0x3636363636363636363636363636363636363636363636363636363636363636",
1912
+ },
1913
+ },
1914
+ "providerTransactionHashes": [
1915
+ "0x3636363636363636363636363636363636363636363636363636363636363636",
1916
+ "0x3333333333333333333333333333333333333333333333333333333333333333",
1917
+ ],
1918
+ "providerTransferIndex": 0,
1919
+ "retryState": null,
1920
+ "settlementTransaction": null,
1921
+ "settlementTransactionHash": null,
1922
+ "snapshot": {
1923
+ "depositAddressId": Any<String>,
1924
+ "destinationAmount": {
1925
+ "baseUnits": "1000000",
1926
+ "currency": "USD",
1927
+ "decimals": 6,
1928
+ "formatted": "1",
1929
+ },
1930
+ "destinationChain": {
1931
+ "addressFormat": "hex",
1932
+ "id": "eip155:4217",
1933
+ "kind": "evm",
1934
+ "name": "Tempo",
1935
+ },
1936
+ "destinationToken": {
1937
+ "address": "0x20c000000000000000000000b9537d11c60e8b50",
1938
+ "currency": "USD",
1939
+ "decimals": 6,
1940
+ "name": "Bridged USDC (Stargate)",
1941
+ "standard": "TIP-20",
1942
+ "symbol": "USDC.e",
1943
+ "tokenKey": "eip155:4217/erc20:0x20c000000000000000000000b9537d11c60e8b50",
1944
+ "verified": true,
1945
+ },
1946
+ "destinationTransactionHashes": [
1947
+ "0x3333333333333333333333333333333333333333333333333333333333333333",
1948
+ ],
1949
+ "provider": {
1950
+ "id": "relay",
1951
+ "name": "Relay",
1952
+ },
1953
+ "recipient": "0x1111111111111111111111111111111111111111",
1954
+ "refundAddress": "0x3838383838383838383838383838383838383838",
1955
+ "sender": "0x3838383838383838383838383838383838383838",
1956
+ "sourceAmount": {
1957
+ "baseUnits": "1000000",
1958
+ "currency": "USD",
1959
+ "decimals": 6,
1960
+ "formatted": "1",
1961
+ },
1962
+ "sourceChain": {
1963
+ "addressFormat": "hex",
1964
+ "id": "eip155:8453",
1965
+ "kind": "evm",
1966
+ "name": "Base",
1967
+ },
1968
+ "sourceToken": {
1969
+ "address": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
1970
+ "currency": "USD",
1971
+ "decimals": 6,
1972
+ "name": "USD Coin",
1973
+ "standard": "ERC-20",
1974
+ "symbol": "USDC",
1975
+ "tokenKey": "eip155:8453/erc20:0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
1976
+ "verified": true,
1977
+ },
1978
+ "sourceTransactionHashes": [
1979
+ "0x3737373737373737373737373737373737373737373737373737373737373737",
1980
+ ],
1981
+ },
1982
+ "sourceChainId": "eip155:8453",
1983
+ "sourceTransactionHash": "0x3737373737373737373737373737373737373737373737373737373737373737",
1984
+ "sourceTransferIndex": 0,
1985
+ "status": "completed",
1986
+ "statusReason": null,
1987
+ "subsidyAmount": null,
1988
+ "tempoGasPaid": null,
1989
+ "updatedAt": Any<String>,
1990
+ "version": 3,
1991
+ "webhookReceivedAt": null,
1992
+ },
1804
1993
  "counts": [
1805
1994
  [
1806
1995
  "funding_deposit_delivery_observation_count",
@@ -1811,37 +2000,47 @@ describe('createTracker', () => {
1811
2000
  },
1812
2001
  ],
1813
2002
  [
1814
- "funding_deposit_detection_count",
2003
+ "funding_deposit_reconciliation_count",
1815
2004
  1,
1816
2005
  {
2006
+ "outcome": "follow_up_enqueued",
1817
2007
  "provider": "relay",
1818
- "trigger": "webhook",
2008
+ "trigger": "chain",
1819
2009
  },
1820
2010
  ],
1821
2011
  [
1822
2012
  "funding_deposit_reconciliation_count",
1823
2013
  1,
1824
2014
  {
1825
- "outcome": "follow_up_enqueued",
2015
+ "outcome": "completed",
2016
+ "provider": "relay",
2017
+ "trigger": "chain",
2018
+ },
2019
+ ],
2020
+ [
2021
+ "funding_deposit_delivery_observation_count",
2022
+ 1,
2023
+ {
2024
+ "outcome": "verified",
1826
2025
  "provider": "relay",
1827
- "trigger": "webhook",
1828
2026
  },
1829
2027
  ],
1830
2028
  [
1831
2029
  "funding_deposit_reconciliation_count",
1832
2030
  1,
1833
2031
  {
1834
- "outcome": "completed",
2032
+ "outcome": "follow_up_enqueued",
1835
2033
  "provider": "relay",
1836
- "trigger": "webhook",
2034
+ "trigger": "chain",
1837
2035
  },
1838
2036
  ],
1839
2037
  [
1840
- "funding_deposit_delivery_observation_count",
2038
+ "funding_deposit_reconciliation_count",
1841
2039
  1,
1842
2040
  {
1843
- "outcome": "verified",
2041
+ "outcome": "completed",
1844
2042
  "provider": "relay",
2043
+ "trigger": "chain",
1845
2044
  },
1846
2045
  ],
1847
2046
  [
@@ -1850,7 +2049,7 @@ describe('createTracker', () => {
1850
2049
  {
1851
2050
  "outcome": "completed",
1852
2051
  "provider": "relay",
1853
- "trigger": "webhook",
2052
+ "trigger": "chain",
1854
2053
  },
1855
2054
  ],
1856
2055
  ],
@@ -1862,8 +2061,21 @@ describe('createTracker', () => {
1862
2061
  "attempt": 0,
1863
2062
  "kind": "delivery",
1864
2063
  },
1865
- "requestId": "relay-observed-request",
1866
- "trigger": "webhook",
2064
+ "trigger": "chain",
2065
+ "type": "funding:deposit-address:reconcile",
2066
+ },
2067
+ {
2068
+ "delaySeconds": 1,
2069
+ },
2070
+ ],
2071
+ [
2072
+ {
2073
+ "addressId": "<address-id>",
2074
+ "followUp": {
2075
+ "attempt": 0,
2076
+ "kind": "provider",
2077
+ },
2078
+ "trigger": "chain",
1867
2079
  "type": "funding:deposit-address:reconcile",
1868
2080
  },
1869
2081
  {
@@ -1872,14 +2084,14 @@ describe('createTracker', () => {
1872
2084
  ],
1873
2085
  ],
1874
2086
  "pending": {
1875
- "created": 1,
2087
+ "created": 0,
1876
2088
  "type": "completed",
1877
2089
  "updated": 1,
1878
2090
  },
1879
2091
  "record": {
1880
2092
  "createdAt": Any<String>,
1881
2093
  "depositAddressId": Any<String>,
1882
- "detectionTrigger": "webhook",
2094
+ "detectionTrigger": "chain",
1883
2095
  "environment": "production",
1884
2096
  "id": Any<String>,
1885
2097
  "orgId": "org_delivery_observation",
@@ -1961,7 +2173,7 @@ describe('createTracker', () => {
1961
2173
  },
1962
2174
  "recipient": "0x1111111111111111111111111111111111111111",
1963
2175
  "refundAddress": "0x3838383838383838383838383838383838383838",
1964
- "sender": "0x3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c",
2176
+ "sender": "0x3838383838383838383838383838383838383838",
1965
2177
  "sourceAmount": {
1966
2178
  "baseUnits": "1000000",
1967
2179
  "currency": "USD",
@@ -1996,16 +2208,21 @@ describe('createTracker', () => {
1996
2208
  "subsidyAmount": null,
1997
2209
  "tempoGasPaid": null,
1998
2210
  "updatedAt": Any<String>,
1999
- "version": 5,
2211
+ "version": 4,
2000
2212
  "webhookReceivedAt": null,
2001
2213
  },
2002
2214
  "rpcMethods": [
2003
2215
  "eth_getTransactionReceipt",
2004
2216
  "eth_blockNumber",
2217
+ "eth_getLogs",
2218
+ "eth_getTransactionByHash",
2219
+ "eth_getTransactionByHash",
2005
2220
  "eth_getTransactionReceipt",
2006
2221
  "eth_blockNumber",
2007
2222
  "eth_getLogs",
2008
2223
  "eth_getTransactionByHash",
2224
+ "eth_blockNumber",
2225
+ "eth_getLogs",
2009
2226
  "eth_getTransactionByHash",
2010
2227
  "eth_getTransactionReceipt",
2011
2228
  "eth_blockNumber",
@@ -2015,10 +2232,31 @@ describe('createTracker', () => {
2015
2232
  "eth_getTransactionByHash",
2016
2233
  "eth_blockNumber",
2017
2234
  "eth_getLogs",
2235
+ "eth_getTransactionReceipt",
2236
+ "eth_blockNumber",
2237
+ "eth_blockNumber",
2238
+ "eth_getLogs",
2018
2239
  "eth_getTransactionByHash",
2019
2240
  "eth_getTransactionReceipt",
2020
2241
  "eth_blockNumber",
2242
+ "eth_getTransactionReceipt",
2243
+ "eth_blockNumber",
2021
2244
  ],
2245
+ "sourceObservation": "created",
2246
+ "uncorrelatedObservation": {
2247
+ "providerState": {
2248
+ "relay": {
2249
+ "orderId": "0x3434343434343434343434343434343434343434343434343434343434343434",
2250
+ "sourceDepository": "0x3232323232323232323232323232323232323232",
2251
+ "sourceObservedAt": "2026-01-04T00:03:00.000Z",
2252
+ "sourceSweepTransactionHash": "0x3636363636363636363636363636363636363636363636363636363636363636",
2253
+ },
2254
+ },
2255
+ "providerTransactionHashes": [
2256
+ "0x3636363636363636363636363636363636363636363636363636363636363636",
2257
+ ],
2258
+ "type": "pending",
2259
+ },
2022
2260
  }
2023
2261
  `,
2024
2262
  )