import type { EvmAddress } from "./evm.js"; import { type BigintLike, type ProtocolApprovalMode, type ProtocolExecutionPlan } from "./protocol-plans.js"; export type GoalStakeDepositPlan = ProtocolExecutionPlan<"stake.deposit-goal"> & { stakeVaultAddress: EvmAddress; goalTokenAddress: EvmAddress; amount: string; approvalIncluded: boolean; }; export type CobuildStakeDepositPlan = ProtocolExecutionPlan<"stake.deposit-cobuild"> & { stakeVaultAddress: EvmAddress; cobuildTokenAddress: EvmAddress; amount: string; approvalIncluded: boolean; }; export type UnderwriterWithdrawalPreparationPlan = ProtocolExecutionPlan<"stake.prepare-underwriter-withdrawal"> & { stakeVaultAddress: EvmAddress; maxBudgets: string; }; export type JurorOptInPlan = ProtocolExecutionPlan<"stake.opt-in-juror"> & { stakeVaultAddress: EvmAddress; goalTokenAddress: EvmAddress; goalAmount: string; delegate: EvmAddress; approvalIncluded: boolean; }; export type JurorExitRequestPlan = ProtocolExecutionPlan<"stake.request-juror-exit"> & { stakeVaultAddress: EvmAddress; goalAmount: string; }; export type JurorExitFinalizationPlan = ProtocolExecutionPlan<"stake.finalize-juror-exit"> & { stakeVaultAddress: EvmAddress; }; export type JurorDelegateUpdatePlan = ProtocolExecutionPlan<"stake.set-juror-delegate"> & { stakeVaultAddress: EvmAddress; delegate: EvmAddress; }; export type GoalStakeWithdrawalPlan = ProtocolExecutionPlan<"stake.withdraw-goal"> & { stakeVaultAddress: EvmAddress; recipient: EvmAddress; amount: string; }; export type CobuildStakeWithdrawalPlan = ProtocolExecutionPlan<"stake.withdraw-cobuild"> & { stakeVaultAddress: EvmAddress; recipient: EvmAddress; amount: string; }; export type GoalStakedEvent = { user: EvmAddress; amount: bigint; weightDelta: bigint; }; export type CobuildStakedEvent = GoalStakedEvent; export type GoalWithdrawnEvent = { user: EvmAddress; to: EvmAddress; amount: bigint; }; export type CobuildWithdrawnEvent = GoalWithdrawnEvent; export type UnderwriterWithdrawalPreparedEvent = { underwriter: EvmAddress; nextBudgetIndex: bigint; budgetCount: bigint; complete: boolean; }; export type JurorOptedInEvent = { juror: EvmAddress; goalAmount: bigint; weightDelta: bigint; delegate: EvmAddress; }; export type JurorExitRequestedEvent = { juror: EvmAddress; goalAmount: bigint; requestedAt: bigint; availableAt: bigint; }; export type JurorExitFinalizedEvent = { juror: EvmAddress; goalAmount: bigint; weightDelta: bigint; }; export type JurorDelegateSetEvent = { juror: EvmAddress; delegate: EvmAddress; }; export type StakeVaultReceiptSummary = { goalStaked: GoalStakedEvent | null; cobuildStaked: CobuildStakedEvent | null; goalWithdrawn: GoalWithdrawnEvent | null; cobuildWithdrawn: CobuildWithdrawnEvent | null; underwriterWithdrawalPrepared: UnderwriterWithdrawalPreparedEvent | null; jurorOptedIn: JurorOptedInEvent | null; jurorExitRequested: JurorExitRequestedEvent | null; jurorExitFinalized: JurorExitFinalizedEvent | null; jurorDelegateSet: JurorDelegateSetEvent | null; }; export declare function buildGoalStakeDepositPlan(params: { network?: string; stakeVaultAddress: string; goalTokenAddress: string; amount: BigintLike; currentAllowance?: BigintLike | null; approvalAmount?: BigintLike; approvalMode?: ProtocolApprovalMode; }): GoalStakeDepositPlan; export declare function buildCobuildStakeDepositPlan(params: { network?: string; stakeVaultAddress: string; cobuildTokenAddress: string; amount: BigintLike; currentAllowance?: BigintLike | null; approvalAmount?: BigintLike; approvalMode?: ProtocolApprovalMode; }): CobuildStakeDepositPlan; export declare function buildJurorOptInPlan(params: { network?: string; stakeVaultAddress: string; goalTokenAddress: string; goalAmount: BigintLike; delegate: string; currentAllowance?: BigintLike | null; approvalAmount?: BigintLike; approvalMode?: ProtocolApprovalMode; }): JurorOptInPlan; export declare function buildJurorExitRequestPlan(params: { network?: string; stakeVaultAddress: string; goalAmount: BigintLike; }): JurorExitRequestPlan; export declare function buildJurorExitFinalizationPlan(params: { network?: string; stakeVaultAddress: string; }): JurorExitFinalizationPlan; export declare function buildJurorDelegateUpdatePlan(params: { network?: string; stakeVaultAddress: string; delegate: string; }): JurorDelegateUpdatePlan; export declare function buildUnderwriterWithdrawalPreparationPlan(params: { network?: string; stakeVaultAddress: string; maxBudgets: BigintLike; }): UnderwriterWithdrawalPreparationPlan; export declare function buildGoalStakeWithdrawalPlan(params: { network?: string; stakeVaultAddress: string; amount: BigintLike; recipient: string; }): GoalStakeWithdrawalPlan; export declare function buildCobuildStakeWithdrawalPlan(params: { network?: string; stakeVaultAddress: string; amount: BigintLike; recipient: string; }): CobuildStakeWithdrawalPlan; export declare function decodeStakeVaultReceipt(logs: readonly unknown[]): StakeVaultReceiptSummary; export declare function serializeStakeVaultReceipt(summary: StakeVaultReceiptSummary): Record;