aere-contracts/contracts/season1/interfaces/ISeason1.sol
Aere Network a13a649b77
Some checks are pending
contracts-ci / Install (lockfile) → compile → full test suite (push) Waiting to run
contracts-ci / PQC known-answer tests (NIST vectors) (push) Waiting to run
contracts-ci / Coverage (scoped, with artifacts) (push) Waiting to run
Initial public release
Aere Network public source. Everything here can be checked against the live
chain (chain id 2800, https://rpc.aere.network).

Scope note, stated up front rather than buried: consensus on chain 2800 is
classical secp256k1 ECDSA QBFT. The post-quantum work in this repository is at
the signature, precompile, account and transport layers. Nothing here makes the
consensus post-quantum, and no document in it should be read as claiming so.
2026-07-20 01:02:37 +03:00

90 lines
3.9 KiB
Solidity

// SPDX-License-Identifier: MIT
pragma solidity 0.8.23;
/**
* @title AERE Season 1 "Altitude" — shared interfaces
* @notice Minimal interfaces so the Season 1 suite can be wired to LIVE chain
* 2800 contracts without importing their full source. All external
* oracle references (humanity / passkey) are Foundation-settable and
* wired POST-DEPLOY to the appropriate live source, so nothing here
* hardcodes an ABI we cannot verify.
*
* HONESTY / DISCLAIMER (mandatory for all user-facing copy that surfaces
* Altitude Points or Season 1 rewards): Altitude Points (AP) are NOT a
* token. They are non-transferable and have no guaranteed monetary value.
* Any future reward depends on the network growing and is not promised.
* There is no listing. Nothing here is an offer of, or a right to, value
* or returns.
*/
/// @notice Non-transferable Season 1 points ledger (credit-only).
interface IAerePointsLedger {
function credit(address account, uint256 amount, bytes32 questId) external;
function balanceOf(address account) external view returns (uint256);
function isAttestor(address who) external view returns (bool);
}
/// @notice Quest configuration registry.
interface IAereQuestRegistry {
struct Quest {
uint256 weight; // points credited per completion
uint64 startTime; // window open (unix)
uint64 endTime; // window close (unix); 0 == open-ended
uint256 perUserCap; // max cumulative points per user for this quest
bool active; // Foundation kill-switch
bool requiresVerifiedHuman;
bool exists;
}
function getQuest(bytes32 questId) external view returns (Quest memory);
function isOpen(bytes32 questId, uint256 atTime) external view returns (bool);
}
/// @notice First-Flight soulbound check-in attestation.
interface IAereQuestCheckIn {
function hasCheckedIn(address account) external view returns (bool);
}
/// @notice Per-account quest completion accounting exposed by the attestor.
interface IAereQuestAttestor {
function distinctQuestCount(address account) external view returns (uint256);
function earned(address account, bytes32 questId) external view returns (uint256);
}
/**
* @notice Generic "is this account verified as a human?" oracle. The Foundation
* wires this to an adapter over AereZKScreen (over-18 / EU-residency
* program clearance) + AereSanctionsRegistry (not sanctioned). Kept as a
* settable reference so the compliance source can evolve without
* redeploying the attestor.
*/
interface IHumanityOracle {
function isVerifiedHuman(address account) external view returns (bool);
}
/**
* @notice Generic boolean flag oracle. Used by the referral registry to check
* "has this account created a passkey smart account?" The Foundation
* wires it to a passkey-account indexer/attestor (the live
* AerePasskeyAccountFactoryV2 emits AccountCreated but keeps no queryable
* on-chain set, so an attested flag source is used).
*/
interface IAccountFlag {
function isFlagged(address account) external view returns (bool);
}
/// @notice Wrapped-AERE (WETH-style) surface used by the reward distributor to
/// convert native AERE into WAERE for the sAERE-delivery path.
interface IWaereWrap {
function deposit() external payable;
function approve(address spender, uint256 amount) external returns (bool);
function transfer(address to, uint256 amount) external returns (bool);
function balanceOf(address account) external view returns (uint256);
}
/// @notice Minimal ERC-4626 surface for sAERE (deposit WAERE, mint sAERE to receiver).
interface ISAEREVault {
function deposit(uint256 assets, address receiver) external returns (uint256 shares);
function asset() external view returns (address);
}