import { Field, SmartContract, State, PublicKey, Bool, UInt64 } from 'o1js'; import { Storage as DkgStorage, RequesterLevel1Witness } from '@auxo-dev/dkg'; import { ZkAppRef, AddressWitness } from '../storages/SharedStorage.js'; import { CampaignLevel1Witness } from '../storages/CampaignStorage.js'; import { VestingInfo, VestingLevel1Witness } from '../storages/VestingStorage.js'; import { TreasuryAddressLevel1Witness } from '../storages/ProjectStorage.js'; import { ClaimedAmountLevel1Witness } from '../storages/TreasuryManagerStorage.js'; import { ProjectIndexLevel1Witness } from '../storages/ParticipationStorage.js'; import { NullifierLevel1Witness } from '../storages/NullifierStorage.js'; export { VestingContract, VestingContractMock }; declare class VestingContract extends SmartContract { vestingInfoRoot: State; vestingBalanceRoot: State; receiveFundAddressHash: State; requesterForVestingAddressHash: State; nextVestingId: State; zkAppRoot: State; init(): void; createVestingRequest(vestingInfo: VestingInfo, committeeId: Field, keyId: Field, vestingContractWitness: AddressWitness, vestingInfoWitness: VestingLevel1Witness, keyStatusWitness: DkgStorage.DKGStorage.DkgLevel1Witness, dkgContractRef: ZkAppRef, requesterForVestingAddress: PublicKey): Promise; vote(type: Field, // 0: No, 1: Yes vestingInfo: VestingInfo, projectId: Field, projectIndex: Field, projectIndexWitness: ProjectIndexLevel1Witness, vestingId: Field, investedAmount: UInt64, fundingIndex: Field, nullifier: Field, committeeId: Field, keyId: Field, keyWitnessForRequester: DkgStorage.RequesterStorage.RequesterLevel1Witness, key: PublicKey, keyWitnessForDkg: DkgStorage.DKGStorage.DkgLevel1Witness, treasuryAddressWitness: TreasuryAddressLevel1Witness, vestingInfoWitness: VestingLevel1Witness, nullifierWitness: NullifierLevel1Witness, nullifierInFundingWitness: RequesterLevel1Witness, fundingContractWitness: AddressWitness, dkgContractRef: ZkAppRef, projectContractRef: ZkAppRef, participationContractRef: ZkAppRef, requesterContractRef: ZkAppRef, nullifierContractRef: ZkAppRef, requesterForVestingAddress: PublicKey): Promise; claimMilestoneFund(vestingInfo: VestingInfo, projectId: Field, vestingId: Field, requestId: Field, votedYesAmount: UInt64, projectIndex: Field, campaignClaimedAmount: UInt64, receiveFundAddress: PublicKey, vestedAmount: UInt64, vestingBalanceWitness: CampaignLevel1Witness, treasuryAddressWitness: TreasuryAddressLevel1Witness, claimedAmountWitness: ClaimedAmountLevel1Witness, projectIndexWitness: ProjectIndexLevel1Witness, vestingInfoWitness: VestingLevel1Witness, taskIdWitness: DkgStorage.RequestStorage.RequestLevel1Witness, resultVectorWitness: DkgStorage.RequestStorage.RequestLevel1Witness, resultValueWitness: DkgStorage.RequestStorage.RequestLevel2Witness, projectContractRef: ZkAppRef, participationContractRef: ZkAppRef, requestContractRef: ZkAppRef, treasuryManagerContractRef: ZkAppRef, requesterForVestingAddress: PublicKey): Promise; verifyVestingInfo(vestingId: Field, vestingInfo: VestingInfo, vestingInfoWitness: VestingLevel1Witness): Bool; } declare class VestingContractMock extends SmartContract { vestingInfoRoot: State; vestingBalanceRoot: State; receiveFundAddressHash: State; requesterForVestingAddressHash: State; nextVestingId: State; zkAppRoot: State; init(): void; createVestingRequest(vestingInfo: VestingInfo, vestingInfoWitness: VestingLevel1Witness): Promise; vote(type: Field, // 0: No, 1: Yes vestingInfo: VestingInfo, projectId: Field, projectIndex: Field, projectIndexWitness: ProjectIndexLevel1Witness, vestingId: Field, investedAmount: UInt64, nullifier: Field, treasuryAddressWitness: TreasuryAddressLevel1Witness, vestingInfoWitness: VestingLevel1Witness, nullifierWitness: NullifierLevel1Witness, projectContractRef: ZkAppRef, participationContractRef: ZkAppRef, nullifierContractRef: ZkAppRef): Promise; claimMilestoneFund(vestingInfo: VestingInfo, vestingId: Field, projectId: Field, projectIndex: Field, votedYesAmount: UInt64, campaignClaimedAmount: UInt64, receiveFundAddress: PublicKey, vestedAmount: UInt64, vestingBalanceWitness: CampaignLevel1Witness, treasuryAddressWitness: TreasuryAddressLevel1Witness, claimedAmountWitness: ClaimedAmountLevel1Witness, projectIndexWitness: ProjectIndexLevel1Witness, vestingInfoWitness: VestingLevel1Witness, projectContractRef: ZkAppRef, participationContractRef: ZkAppRef, treasuryManagerContractRef: ZkAppRef): Promise; verifyVestingInfo(vestingId: Field, vestingInfo: VestingInfo, vestingInfoWitness: VestingLevel1Witness): Bool; }