import { Group, PublicKey, Scalar } from 'o1js'; export { SecretPolynomial, Round1Contribution, Round2Contribution, Round2Data, TallyContribution, calculatePublicKey, calculatePolynomialValue, generateRandomPolynomial, getRound1Contribution, getRound2Contribution, getTallyContribution, getLagrangeCoefficient, getResultVector, encryptVector, accumulateEncryption, }; type SecretPolynomial = { a: Scalar[]; C: Group[]; f: Scalar[]; }; type Round1Contribution = { C: Group[]; }; type Round2Data = { c: bigint; U: Group; }; type Round2Contribution = { data: Round2Data[]; }; type TallyContribution = { D: Group[]; }; declare function calculatePublicKey(round1Contributions: Round1Contribution[]): PublicKey; declare function calculatePolynomialValue(a: Scalar[], x: number): Scalar; declare function generateRandomPolynomial(T: number, N: number): SecretPolynomial; declare function getRound1Contribution(secret: SecretPolynomial): Round1Contribution; declare function getRound2Contribution(secret: SecretPolynomial, index: number, round1Contributions: Round1Contribution[]): Round2Contribution; declare function getTallyContribution(secret: SecretPolynomial, index: number, round2Data: Round2Data[], R: Group[]): TallyContribution; declare function getLagrangeCoefficient(listIndex: number[]): Scalar[]; declare function getResultVector(listIndex: number[], D: Group[][], M: Group[]): Group[]; declare function encryptVector(publicKey: PublicKey, vector: bigint[]): { r: Scalar[]; R: Group[]; M: Group[]; }; declare function accumulateEncryption(R: Group[][], M: Group[][]): { sumR: Group[]; sumM: Group[]; };