import { PubKey, GeneralPrefixData } from "../types.js"; import { FundOperation } from "../operations/fund.js"; import { RollOverOperation } from "../operations/rollover.js"; import { TransferOperation } from "../operations/transfer.js"; import { WithdrawOperation } from "../operations/withdraw.js"; import { RagequitOperation } from "../operations/ragequit.js"; import { AEBalance } from "../ae_balance.js"; import { Audit, ExPost } from "../operations/audit.js"; import { AccountEvents, AccountFundEvent, AccountRagequitEvent, AccountRolloverEvent, AccountTransferInEvent, AccountTransferOutEvent, AccountWithdrawEvent } from "./events.js"; import { CairoOption } from "starknet"; import { CipherBalance } from "../types.js"; export interface IAccount { publicKey: PubKey; tongoAddress(): string; fund(fundDetails: FundDetails): Promise; transfer(transferDetails: TransferDetails): Promise; withdraw(withdrawDetails: WithdrawDetails): Promise; ragequit(ragequitDetails: RagequitDetails): Promise; rollover(rolloverDetails: RolloverDetails): Promise; rawState(): Promise; state(): Promise; nonce(): Promise; rate(): Promise; decryptAEBalance(cipher: AEBalance, accountNonce: bigint): Promise; decryptCipherBalance(cipher: CipherBalance): bigint; erc20ToTongo(erc20Amount: bigint): Promise; tongoToErc20(tongoAmount: bigint): Promise; createAuditPart(balance: bigint, storedCipherBalance: CipherBalance, prefix_data: GeneralPrefixData): Promise>; generateExPost(to: PubKey, cipher: CipherBalance, sender: string): Promise; verifyExPost(expost: ExPost): bigint; getEventsFund(initialBlock: number): Promise; getEventsRollover(initialBlock: number): Promise; getEventsWithdraw(initialBlock: number): Promise; getEventsRagequit(initialBlock: number): Promise; getEventsTransferOut(initialBlock: number): Promise; getEventsTransferIn(initialBlock: number): Promise; getTxHistory(initialBlock: number): Promise; } export interface FundDetails { amount: bigint; sender: string; } export interface TransferDetails { amount: bigint; to: PubKey; sender: string; } export interface RolloverDetails { sender: string; } export interface RagequitDetails { to: string; sender: string; } export interface WithdrawDetails { to: string; amount: bigint; sender: string; } export interface RawAccountState { balance: CipherBalance; pending: CipherBalance; audit: CipherBalance | undefined; aeBalance?: AEBalance; aeAuditBalance?: AEBalance; nonce: bigint; } export interface AccountState { balance: bigint; pending: bigint; nonce: bigint; }