MockPyth.json 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035
  1. [
  2. {
  3. "inputs": [
  4. {
  5. "internalType": "uint256",
  6. "name": "_validTimePeriod",
  7. "type": "uint256"
  8. },
  9. {
  10. "internalType": "uint256",
  11. "name": "_singleUpdateFeeInWei",
  12. "type": "uint256"
  13. }
  14. ],
  15. "stateMutability": "nonpayable",
  16. "type": "constructor"
  17. },
  18. {
  19. "inputs": [],
  20. "name": "InsufficientFee",
  21. "type": "error"
  22. },
  23. {
  24. "inputs": [],
  25. "name": "InvalidArgument",
  26. "type": "error"
  27. },
  28. {
  29. "inputs": [],
  30. "name": "InvalidTwapUpdateDataSet",
  31. "type": "error"
  32. },
  33. {
  34. "inputs": [],
  35. "name": "NoFreshUpdate",
  36. "type": "error"
  37. },
  38. {
  39. "inputs": [],
  40. "name": "PriceFeedNotFound",
  41. "type": "error"
  42. },
  43. {
  44. "inputs": [],
  45. "name": "PriceFeedNotFoundWithinRange",
  46. "type": "error"
  47. },
  48. {
  49. "inputs": [],
  50. "name": "StalePrice",
  51. "type": "error"
  52. },
  53. {
  54. "anonymous": false,
  55. "inputs": [
  56. {
  57. "indexed": true,
  58. "internalType": "bytes32",
  59. "name": "id",
  60. "type": "bytes32"
  61. },
  62. {
  63. "indexed": false,
  64. "internalType": "uint64",
  65. "name": "publishTime",
  66. "type": "uint64"
  67. },
  68. {
  69. "indexed": false,
  70. "internalType": "int64",
  71. "name": "price",
  72. "type": "int64"
  73. },
  74. {
  75. "indexed": false,
  76. "internalType": "uint64",
  77. "name": "conf",
  78. "type": "uint64"
  79. }
  80. ],
  81. "name": "PriceFeedUpdate",
  82. "type": "event"
  83. },
  84. {
  85. "anonymous": false,
  86. "inputs": [
  87. {
  88. "indexed": true,
  89. "internalType": "bytes32",
  90. "name": "id",
  91. "type": "bytes32"
  92. },
  93. {
  94. "indexed": false,
  95. "internalType": "uint64",
  96. "name": "startTime",
  97. "type": "uint64"
  98. },
  99. {
  100. "indexed": false,
  101. "internalType": "uint64",
  102. "name": "endTime",
  103. "type": "uint64"
  104. },
  105. {
  106. "indexed": false,
  107. "internalType": "int64",
  108. "name": "twapPrice",
  109. "type": "int64"
  110. },
  111. {
  112. "indexed": false,
  113. "internalType": "uint64",
  114. "name": "twapConf",
  115. "type": "uint64"
  116. },
  117. {
  118. "indexed": false,
  119. "internalType": "uint32",
  120. "name": "downSlotsRatio",
  121. "type": "uint32"
  122. }
  123. ],
  124. "name": "TwapPriceFeedUpdate",
  125. "type": "event"
  126. },
  127. {
  128. "inputs": [
  129. {
  130. "internalType": "bytes32",
  131. "name": "id",
  132. "type": "bytes32"
  133. },
  134. {
  135. "internalType": "int64",
  136. "name": "price",
  137. "type": "int64"
  138. },
  139. {
  140. "internalType": "uint64",
  141. "name": "conf",
  142. "type": "uint64"
  143. },
  144. {
  145. "internalType": "int32",
  146. "name": "expo",
  147. "type": "int32"
  148. },
  149. {
  150. "internalType": "int64",
  151. "name": "emaPrice",
  152. "type": "int64"
  153. },
  154. {
  155. "internalType": "uint64",
  156. "name": "emaConf",
  157. "type": "uint64"
  158. },
  159. {
  160. "internalType": "uint64",
  161. "name": "publishTime",
  162. "type": "uint64"
  163. },
  164. {
  165. "internalType": "uint64",
  166. "name": "prevPublishTime",
  167. "type": "uint64"
  168. }
  169. ],
  170. "name": "createPriceFeedUpdateData",
  171. "outputs": [
  172. {
  173. "internalType": "bytes",
  174. "name": "priceFeedData",
  175. "type": "bytes"
  176. }
  177. ],
  178. "stateMutability": "pure",
  179. "type": "function"
  180. },
  181. {
  182. "inputs": [
  183. {
  184. "internalType": "bytes32",
  185. "name": "id",
  186. "type": "bytes32"
  187. },
  188. {
  189. "internalType": "uint64",
  190. "name": "startTime",
  191. "type": "uint64"
  192. },
  193. {
  194. "internalType": "uint64",
  195. "name": "endTime",
  196. "type": "uint64"
  197. },
  198. {
  199. "internalType": "int64",
  200. "name": "price",
  201. "type": "int64"
  202. },
  203. {
  204. "internalType": "uint64",
  205. "name": "conf",
  206. "type": "uint64"
  207. },
  208. {
  209. "internalType": "int32",
  210. "name": "expo",
  211. "type": "int32"
  212. },
  213. {
  214. "internalType": "uint32",
  215. "name": "downSlotsRatio",
  216. "type": "uint32"
  217. }
  218. ],
  219. "name": "createTwapPriceFeedUpdateData",
  220. "outputs": [
  221. {
  222. "internalType": "bytes",
  223. "name": "twapData",
  224. "type": "bytes"
  225. }
  226. ],
  227. "stateMutability": "pure",
  228. "type": "function"
  229. },
  230. {
  231. "inputs": [
  232. {
  233. "internalType": "bytes32",
  234. "name": "id",
  235. "type": "bytes32"
  236. }
  237. ],
  238. "name": "getEmaPrice",
  239. "outputs": [
  240. {
  241. "components": [
  242. {
  243. "internalType": "int64",
  244. "name": "price",
  245. "type": "int64"
  246. },
  247. {
  248. "internalType": "uint64",
  249. "name": "conf",
  250. "type": "uint64"
  251. },
  252. {
  253. "internalType": "int32",
  254. "name": "expo",
  255. "type": "int32"
  256. },
  257. {
  258. "internalType": "uint256",
  259. "name": "publishTime",
  260. "type": "uint256"
  261. }
  262. ],
  263. "internalType": "struct PythStructs.Price",
  264. "name": "price",
  265. "type": "tuple"
  266. }
  267. ],
  268. "stateMutability": "view",
  269. "type": "function"
  270. },
  271. {
  272. "inputs": [
  273. {
  274. "internalType": "bytes32",
  275. "name": "id",
  276. "type": "bytes32"
  277. },
  278. {
  279. "internalType": "uint256",
  280. "name": "age",
  281. "type": "uint256"
  282. }
  283. ],
  284. "name": "getEmaPriceNoOlderThan",
  285. "outputs": [
  286. {
  287. "components": [
  288. {
  289. "internalType": "int64",
  290. "name": "price",
  291. "type": "int64"
  292. },
  293. {
  294. "internalType": "uint64",
  295. "name": "conf",
  296. "type": "uint64"
  297. },
  298. {
  299. "internalType": "int32",
  300. "name": "expo",
  301. "type": "int32"
  302. },
  303. {
  304. "internalType": "uint256",
  305. "name": "publishTime",
  306. "type": "uint256"
  307. }
  308. ],
  309. "internalType": "struct PythStructs.Price",
  310. "name": "price",
  311. "type": "tuple"
  312. }
  313. ],
  314. "stateMutability": "view",
  315. "type": "function"
  316. },
  317. {
  318. "inputs": [
  319. {
  320. "internalType": "bytes32",
  321. "name": "id",
  322. "type": "bytes32"
  323. }
  324. ],
  325. "name": "getEmaPriceUnsafe",
  326. "outputs": [
  327. {
  328. "components": [
  329. {
  330. "internalType": "int64",
  331. "name": "price",
  332. "type": "int64"
  333. },
  334. {
  335. "internalType": "uint64",
  336. "name": "conf",
  337. "type": "uint64"
  338. },
  339. {
  340. "internalType": "int32",
  341. "name": "expo",
  342. "type": "int32"
  343. },
  344. {
  345. "internalType": "uint256",
  346. "name": "publishTime",
  347. "type": "uint256"
  348. }
  349. ],
  350. "internalType": "struct PythStructs.Price",
  351. "name": "price",
  352. "type": "tuple"
  353. }
  354. ],
  355. "stateMutability": "view",
  356. "type": "function"
  357. },
  358. {
  359. "inputs": [
  360. {
  361. "internalType": "bytes32",
  362. "name": "id",
  363. "type": "bytes32"
  364. }
  365. ],
  366. "name": "getPrice",
  367. "outputs": [
  368. {
  369. "components": [
  370. {
  371. "internalType": "int64",
  372. "name": "price",
  373. "type": "int64"
  374. },
  375. {
  376. "internalType": "uint64",
  377. "name": "conf",
  378. "type": "uint64"
  379. },
  380. {
  381. "internalType": "int32",
  382. "name": "expo",
  383. "type": "int32"
  384. },
  385. {
  386. "internalType": "uint256",
  387. "name": "publishTime",
  388. "type": "uint256"
  389. }
  390. ],
  391. "internalType": "struct PythStructs.Price",
  392. "name": "price",
  393. "type": "tuple"
  394. }
  395. ],
  396. "stateMutability": "view",
  397. "type": "function"
  398. },
  399. {
  400. "inputs": [
  401. {
  402. "internalType": "bytes32",
  403. "name": "id",
  404. "type": "bytes32"
  405. },
  406. {
  407. "internalType": "uint256",
  408. "name": "age",
  409. "type": "uint256"
  410. }
  411. ],
  412. "name": "getPriceNoOlderThan",
  413. "outputs": [
  414. {
  415. "components": [
  416. {
  417. "internalType": "int64",
  418. "name": "price",
  419. "type": "int64"
  420. },
  421. {
  422. "internalType": "uint64",
  423. "name": "conf",
  424. "type": "uint64"
  425. },
  426. {
  427. "internalType": "int32",
  428. "name": "expo",
  429. "type": "int32"
  430. },
  431. {
  432. "internalType": "uint256",
  433. "name": "publishTime",
  434. "type": "uint256"
  435. }
  436. ],
  437. "internalType": "struct PythStructs.Price",
  438. "name": "price",
  439. "type": "tuple"
  440. }
  441. ],
  442. "stateMutability": "view",
  443. "type": "function"
  444. },
  445. {
  446. "inputs": [
  447. {
  448. "internalType": "bytes32",
  449. "name": "id",
  450. "type": "bytes32"
  451. }
  452. ],
  453. "name": "getPriceUnsafe",
  454. "outputs": [
  455. {
  456. "components": [
  457. {
  458. "internalType": "int64",
  459. "name": "price",
  460. "type": "int64"
  461. },
  462. {
  463. "internalType": "uint64",
  464. "name": "conf",
  465. "type": "uint64"
  466. },
  467. {
  468. "internalType": "int32",
  469. "name": "expo",
  470. "type": "int32"
  471. },
  472. {
  473. "internalType": "uint256",
  474. "name": "publishTime",
  475. "type": "uint256"
  476. }
  477. ],
  478. "internalType": "struct PythStructs.Price",
  479. "name": "price",
  480. "type": "tuple"
  481. }
  482. ],
  483. "stateMutability": "view",
  484. "type": "function"
  485. },
  486. {
  487. "inputs": [
  488. {
  489. "internalType": "bytes[]",
  490. "name": "updateData",
  491. "type": "bytes[]"
  492. }
  493. ],
  494. "name": "getTwapUpdateFee",
  495. "outputs": [
  496. {
  497. "internalType": "uint256",
  498. "name": "feeAmount",
  499. "type": "uint256"
  500. }
  501. ],
  502. "stateMutability": "view",
  503. "type": "function"
  504. },
  505. {
  506. "inputs": [
  507. {
  508. "internalType": "bytes[]",
  509. "name": "updateData",
  510. "type": "bytes[]"
  511. }
  512. ],
  513. "name": "getUpdateFee",
  514. "outputs": [
  515. {
  516. "internalType": "uint256",
  517. "name": "feeAmount",
  518. "type": "uint256"
  519. }
  520. ],
  521. "stateMutability": "view",
  522. "type": "function"
  523. },
  524. {
  525. "inputs": [],
  526. "name": "getValidTimePeriod",
  527. "outputs": [
  528. {
  529. "internalType": "uint256",
  530. "name": "",
  531. "type": "uint256"
  532. }
  533. ],
  534. "stateMutability": "view",
  535. "type": "function"
  536. },
  537. {
  538. "inputs": [
  539. {
  540. "internalType": "bytes[]",
  541. "name": "updateData",
  542. "type": "bytes[]"
  543. },
  544. {
  545. "internalType": "bytes32[]",
  546. "name": "priceIds",
  547. "type": "bytes32[]"
  548. },
  549. {
  550. "internalType": "uint64",
  551. "name": "minPublishTime",
  552. "type": "uint64"
  553. },
  554. {
  555. "internalType": "uint64",
  556. "name": "maxPublishTime",
  557. "type": "uint64"
  558. }
  559. ],
  560. "name": "parsePriceFeedUpdates",
  561. "outputs": [
  562. {
  563. "components": [
  564. {
  565. "internalType": "bytes32",
  566. "name": "id",
  567. "type": "bytes32"
  568. },
  569. {
  570. "components": [
  571. {
  572. "internalType": "int64",
  573. "name": "price",
  574. "type": "int64"
  575. },
  576. {
  577. "internalType": "uint64",
  578. "name": "conf",
  579. "type": "uint64"
  580. },
  581. {
  582. "internalType": "int32",
  583. "name": "expo",
  584. "type": "int32"
  585. },
  586. {
  587. "internalType": "uint256",
  588. "name": "publishTime",
  589. "type": "uint256"
  590. }
  591. ],
  592. "internalType": "struct PythStructs.Price",
  593. "name": "price",
  594. "type": "tuple"
  595. },
  596. {
  597. "components": [
  598. {
  599. "internalType": "int64",
  600. "name": "price",
  601. "type": "int64"
  602. },
  603. {
  604. "internalType": "uint64",
  605. "name": "conf",
  606. "type": "uint64"
  607. },
  608. {
  609. "internalType": "int32",
  610. "name": "expo",
  611. "type": "int32"
  612. },
  613. {
  614. "internalType": "uint256",
  615. "name": "publishTime",
  616. "type": "uint256"
  617. }
  618. ],
  619. "internalType": "struct PythStructs.Price",
  620. "name": "emaPrice",
  621. "type": "tuple"
  622. }
  623. ],
  624. "internalType": "struct PythStructs.PriceFeed[]",
  625. "name": "feeds",
  626. "type": "tuple[]"
  627. }
  628. ],
  629. "stateMutability": "payable",
  630. "type": "function"
  631. },
  632. {
  633. "inputs": [
  634. {
  635. "internalType": "bytes[]",
  636. "name": "updateData",
  637. "type": "bytes[]"
  638. },
  639. {
  640. "internalType": "bytes32[]",
  641. "name": "priceIds",
  642. "type": "bytes32[]"
  643. },
  644. {
  645. "internalType": "uint64",
  646. "name": "minPublishTime",
  647. "type": "uint64"
  648. },
  649. {
  650. "internalType": "uint64",
  651. "name": "maxPublishTime",
  652. "type": "uint64"
  653. }
  654. ],
  655. "name": "parsePriceFeedUpdatesUnique",
  656. "outputs": [
  657. {
  658. "components": [
  659. {
  660. "internalType": "bytes32",
  661. "name": "id",
  662. "type": "bytes32"
  663. },
  664. {
  665. "components": [
  666. {
  667. "internalType": "int64",
  668. "name": "price",
  669. "type": "int64"
  670. },
  671. {
  672. "internalType": "uint64",
  673. "name": "conf",
  674. "type": "uint64"
  675. },
  676. {
  677. "internalType": "int32",
  678. "name": "expo",
  679. "type": "int32"
  680. },
  681. {
  682. "internalType": "uint256",
  683. "name": "publishTime",
  684. "type": "uint256"
  685. }
  686. ],
  687. "internalType": "struct PythStructs.Price",
  688. "name": "price",
  689. "type": "tuple"
  690. },
  691. {
  692. "components": [
  693. {
  694. "internalType": "int64",
  695. "name": "price",
  696. "type": "int64"
  697. },
  698. {
  699. "internalType": "uint64",
  700. "name": "conf",
  701. "type": "uint64"
  702. },
  703. {
  704. "internalType": "int32",
  705. "name": "expo",
  706. "type": "int32"
  707. },
  708. {
  709. "internalType": "uint256",
  710. "name": "publishTime",
  711. "type": "uint256"
  712. }
  713. ],
  714. "internalType": "struct PythStructs.Price",
  715. "name": "emaPrice",
  716. "type": "tuple"
  717. }
  718. ],
  719. "internalType": "struct PythStructs.PriceFeed[]",
  720. "name": "feeds",
  721. "type": "tuple[]"
  722. }
  723. ],
  724. "stateMutability": "payable",
  725. "type": "function"
  726. },
  727. {
  728. "inputs": [
  729. {
  730. "internalType": "bytes[]",
  731. "name": "updateData",
  732. "type": "bytes[]"
  733. },
  734. {
  735. "internalType": "bytes32[]",
  736. "name": "priceIds",
  737. "type": "bytes32[]"
  738. },
  739. {
  740. "internalType": "uint64",
  741. "name": "minPublishTime",
  742. "type": "uint64"
  743. },
  744. {
  745. "internalType": "uint64",
  746. "name": "maxPublishTime",
  747. "type": "uint64"
  748. }
  749. ],
  750. "name": "parsePriceFeedUpdatesWithSlotsStrict",
  751. "outputs": [
  752. {
  753. "components": [
  754. {
  755. "internalType": "bytes32",
  756. "name": "id",
  757. "type": "bytes32"
  758. },
  759. {
  760. "components": [
  761. {
  762. "internalType": "int64",
  763. "name": "price",
  764. "type": "int64"
  765. },
  766. {
  767. "internalType": "uint64",
  768. "name": "conf",
  769. "type": "uint64"
  770. },
  771. {
  772. "internalType": "int32",
  773. "name": "expo",
  774. "type": "int32"
  775. },
  776. {
  777. "internalType": "uint256",
  778. "name": "publishTime",
  779. "type": "uint256"
  780. }
  781. ],
  782. "internalType": "struct PythStructs.Price",
  783. "name": "price",
  784. "type": "tuple"
  785. },
  786. {
  787. "components": [
  788. {
  789. "internalType": "int64",
  790. "name": "price",
  791. "type": "int64"
  792. },
  793. {
  794. "internalType": "uint64",
  795. "name": "conf",
  796. "type": "uint64"
  797. },
  798. {
  799. "internalType": "int32",
  800. "name": "expo",
  801. "type": "int32"
  802. },
  803. {
  804. "internalType": "uint256",
  805. "name": "publishTime",
  806. "type": "uint256"
  807. }
  808. ],
  809. "internalType": "struct PythStructs.Price",
  810. "name": "emaPrice",
  811. "type": "tuple"
  812. }
  813. ],
  814. "internalType": "struct PythStructs.PriceFeed[]",
  815. "name": "feeds",
  816. "type": "tuple[]"
  817. },
  818. {
  819. "internalType": "uint64[]",
  820. "name": "slots",
  821. "type": "uint64[]"
  822. }
  823. ],
  824. "stateMutability": "payable",
  825. "type": "function"
  826. },
  827. {
  828. "inputs": [
  829. {
  830. "internalType": "bytes[]",
  831. "name": "updateData",
  832. "type": "bytes[]"
  833. },
  834. {
  835. "internalType": "bytes32[]",
  836. "name": "priceIds",
  837. "type": "bytes32[]"
  838. }
  839. ],
  840. "name": "parseTwapPriceFeedUpdates",
  841. "outputs": [
  842. {
  843. "components": [
  844. {
  845. "internalType": "bytes32",
  846. "name": "id",
  847. "type": "bytes32"
  848. },
  849. {
  850. "internalType": "uint64",
  851. "name": "startTime",
  852. "type": "uint64"
  853. },
  854. {
  855. "internalType": "uint64",
  856. "name": "endTime",
  857. "type": "uint64"
  858. },
  859. {
  860. "components": [
  861. {
  862. "internalType": "int64",
  863. "name": "price",
  864. "type": "int64"
  865. },
  866. {
  867. "internalType": "uint64",
  868. "name": "conf",
  869. "type": "uint64"
  870. },
  871. {
  872. "internalType": "int32",
  873. "name": "expo",
  874. "type": "int32"
  875. },
  876. {
  877. "internalType": "uint256",
  878. "name": "publishTime",
  879. "type": "uint256"
  880. }
  881. ],
  882. "internalType": "struct PythStructs.Price",
  883. "name": "twap",
  884. "type": "tuple"
  885. },
  886. {
  887. "internalType": "uint32",
  888. "name": "downSlotsRatio",
  889. "type": "uint32"
  890. }
  891. ],
  892. "internalType": "struct PythStructs.TwapPriceFeed[]",
  893. "name": "twapPriceFeeds",
  894. "type": "tuple[]"
  895. }
  896. ],
  897. "stateMutability": "payable",
  898. "type": "function"
  899. },
  900. {
  901. "inputs": [
  902. {
  903. "internalType": "bytes32",
  904. "name": "id",
  905. "type": "bytes32"
  906. }
  907. ],
  908. "name": "priceFeedExists",
  909. "outputs": [
  910. {
  911. "internalType": "bool",
  912. "name": "",
  913. "type": "bool"
  914. }
  915. ],
  916. "stateMutability": "view",
  917. "type": "function"
  918. },
  919. {
  920. "inputs": [
  921. {
  922. "internalType": "bytes32",
  923. "name": "id",
  924. "type": "bytes32"
  925. }
  926. ],
  927. "name": "queryPriceFeed",
  928. "outputs": [
  929. {
  930. "components": [
  931. {
  932. "internalType": "bytes32",
  933. "name": "id",
  934. "type": "bytes32"
  935. },
  936. {
  937. "components": [
  938. {
  939. "internalType": "int64",
  940. "name": "price",
  941. "type": "int64"
  942. },
  943. {
  944. "internalType": "uint64",
  945. "name": "conf",
  946. "type": "uint64"
  947. },
  948. {
  949. "internalType": "int32",
  950. "name": "expo",
  951. "type": "int32"
  952. },
  953. {
  954. "internalType": "uint256",
  955. "name": "publishTime",
  956. "type": "uint256"
  957. }
  958. ],
  959. "internalType": "struct PythStructs.Price",
  960. "name": "price",
  961. "type": "tuple"
  962. },
  963. {
  964. "components": [
  965. {
  966. "internalType": "int64",
  967. "name": "price",
  968. "type": "int64"
  969. },
  970. {
  971. "internalType": "uint64",
  972. "name": "conf",
  973. "type": "uint64"
  974. },
  975. {
  976. "internalType": "int32",
  977. "name": "expo",
  978. "type": "int32"
  979. },
  980. {
  981. "internalType": "uint256",
  982. "name": "publishTime",
  983. "type": "uint256"
  984. }
  985. ],
  986. "internalType": "struct PythStructs.Price",
  987. "name": "emaPrice",
  988. "type": "tuple"
  989. }
  990. ],
  991. "internalType": "struct PythStructs.PriceFeed",
  992. "name": "priceFeed",
  993. "type": "tuple"
  994. }
  995. ],
  996. "stateMutability": "view",
  997. "type": "function"
  998. },
  999. {
  1000. "inputs": [
  1001. {
  1002. "internalType": "bytes[]",
  1003. "name": "updateData",
  1004. "type": "bytes[]"
  1005. }
  1006. ],
  1007. "name": "updatePriceFeeds",
  1008. "outputs": [],
  1009. "stateMutability": "payable",
  1010. "type": "function"
  1011. },
  1012. {
  1013. "inputs": [
  1014. {
  1015. "internalType": "bytes[]",
  1016. "name": "updateData",
  1017. "type": "bytes[]"
  1018. },
  1019. {
  1020. "internalType": "bytes32[]",
  1021. "name": "priceIds",
  1022. "type": "bytes32[]"
  1023. },
  1024. {
  1025. "internalType": "uint64[]",
  1026. "name": "publishTimes",
  1027. "type": "uint64[]"
  1028. }
  1029. ],
  1030. "name": "updatePriceFeedsIfNecessary",
  1031. "outputs": [],
  1032. "stateMutability": "payable",
  1033. "type": "function"
  1034. }
  1035. ]