// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

contract DataStorage {
    struct Data {
        string hashedData;
        string salt;
    }
    
    mapping(uint256 => Data) private data;

    event DataStored(uint256 indexed id, string hashedData, string salt);
    event DataDeleted(uint256 indexed id);

    function storeData(uint256 id, string memory hashedData, string memory salt) public {
        require(bytes(data[id].hashedData).length == 0, "Data already exists for this ID");
        data[id] = Data(hashedData, salt);
        emit DataStored(id, hashedData, salt);
    }

    function getData(uint256 id) public view returns (string memory hashedData, string memory salt) {
        Data storage item = data[id];
        require(bytes(item.hashedData).length != 0, "Data not found");
        return (item.hashedData, item.salt);
    }

    function deleteData(uint256 id) public {
        require(bytes(data[id].hashedData).length != 0, "Data not found");
        delete data[id];
        emit DataDeleted(id);
    }
}