// versiegelt: Node 18+, npm install tlock-js@0.9.0. Die Verschlüsselung braucht keine Netzverbindung.
const { timelockEncrypt, Buffer } = require("tlock-js");
const QUICKNET = { hash: "52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971",
public_key: "83cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a",
period: 3, genesis_time: 1692803367, schemeID: "bls-unchained-g1-rfc9380", metadata: { beaconID: "quicknet" } };
const chain = { chain: () => ({ info: async () => QUICKNET }) };
const roundAt = (ms) => Math.ceil((ms / 1000 - QUICKNET.genesis_time) / QUICKNET.period) + 1;
const proposal = {"proposalId":"you-2026-11-02-0001","sourceId":"src_you","sport":"fb","mkt":"1x2","sel":"2","eventIdentity":{"home":"Brann","away":"Molde","league":"Eliteserien","startsTs":1793642400000},"fairOdds":2.6,"devigMethod":"shin","minOdds":2.7,"tsCreated":1793266867318,"ttlMs":120000,"stakeHint":10,"ev":6.5};
const round = roundAt(proposal.eventIdentity.startsTs); // 33,613,012: die erste Runde zum Anpfiff oder danach
const ciphertext = await timelockEncrypt(round, Buffer.from(JSON.stringify(proposal)), chain);
const res = await fetch("https://app.manometer.bet/netz/submit", {
method: "POST", headers: { "Content-Type": "application/json" },
body: JSON.stringify({ sourceId: "src_you", apiKey: "YOUR_API_KEY", proposalId: proposal.proposalId, sealed: { ciphertext } }),
});
const { receipt } = await res.json(); // aufbewahren: das ist dein Nachweis