// SPDX-License-Identifier: MIT pragma solidity ^0.8.20; import {IERC20} from "@openzeppelin-contracts/token/ERC20/IERC20.sol"; interface ISTNK is IERC20 { error NotStakingContract(); error NotTreasury(); error InsufficientBalance(); error DebtExists(); error NotInitializer(); event LogSupply(uint256 indexed epoch, uint256 totalSupply); event LogRebase(uint256 indexed epoch, uint256 rebase, uint256 index); event LogStakingContractUpdated(address stakingContract); function rebase(uint256 profit_, uint256 epoch_) external returns (uint256); function increaseAllowance(address spender, uint256 imbalance) external returns (bool); function decreaseAllowance(address spender, uint256 imbalance) external returns (bool); function circulatingSupply() external view returns (uint256); function treasury() external view returns (address); function sharesForBalance(uint256 amount) external view returns (uint256); function balanceForShares(uint256 shares) external view returns (uint256); function index() external view returns (uint256); function toGhst(uint256 amount) external view returns (uint256); function fromGhst(uint256 amount) external view returns (uint256); function debtBalances(address _address) external view returns (uint256); function changeDebt( uint256 amount, address debtor, bool add ) external; }