| 123456789101112131415161718192021222324252627282930313233 |
- // SPDX-License-Identifier: Apache 2
- pragma solidity ^0.8.0;
- /// @title SchedulerStructs
- /// @notice Contains data structures used by the Pyth Pulse protocol
- contract SchedulerStructs {
- /// @notice Parameters defining a Pulse subscription
- struct SubscriptionParams {
- bytes32[] priceIds; // Array of Pyth price feed IDs to subscribe to
- address[] readerWhitelist; // Optional array of addresses allowed to read prices
- bool whitelistEnabled; // Whether to enforce whitelist or allow anyone to read
- bool isActive; // Whether the subscription is active
- bool isPermanent; // Whether the subscription can be updated
- UpdateCriteria updateCriteria; // When to update the price feeds
- }
- /// @notice Status information for a Pulse subscription
- struct SubscriptionStatus {
- uint256 priceLastUpdatedAt; // Timestamp of the last update. All feeds in the subscription are updated together.
- uint256 balanceInWei; // Balance that will be used to fund the subscription's upkeep.
- uint256 totalUpdates; // Tracks update count across all feeds in the subscription (increments by number of feeds per update)
- uint256 totalSpent; // Counter of total fees paid for subscription upkeep in wei.
- }
- /// @notice Criteria for when price feeds should be updated
- struct UpdateCriteria {
- bool updateOnHeartbeat; // Should update based on time elapsed
- uint32 heartbeatSeconds; // Time interval for heartbeat updates
- bool updateOnDeviation; // Should update based on price deviation
- uint32 deviationThresholdBps; // Price deviation threshold in basis points
- }
- }
|