import {euint256, e, inco} from "@inco/lightning/src/Lib.sol";
import {DecryptionAttestation} from "@inco/lightning/src/lightning-parts/DecryptionAttester.types.sol";
contract TestAttestedDecrypt {
euint256 randomNumber;
uint256 decryptedNumber;
constructor(address owner) payable {
require(msg.value == inco.getFee(), "Fee not paid");
randomNumber = e.rand();
e.allow(randomNumber, address(this));
e.allow(randomNumber, owner);
}
function GetHandle() external returns (euint256) {
return randomNumber;
}
function SubmitDecryption(
DecryptionAttestation memory decryption,
bytes[] memory signatures
) external {
require(
inco.incoVerifier().isValidDecryptionAttestation(decryption, signatures),
"Invalid Signature"
);
require(euint256.unwrap(randomNumber) == decryption.handle, "Handle mismatch");
decryptedNumber = uint256(decryption.value);
}
}