/**
 * Stake operations - register, deregister stake credentials and withdraw rewards.
 *
 * @module operations/Stake
 * @since 2.0.0
 */
import { Effect } from "effect";
import { TransactionBuilderError, TxBuilderConfigTag, TxContext } from "../TransactionBuilder.js";
import type { DelegateToDRepParams, DelegateToParams, DelegateToPoolAndDRepParams, DelegateToPoolParams, DeregisterStakeParams, RegisterAndDelegateToParams, RegisterStakeParams, WithdrawParams } from "./Operations.js";
/**
 * Creates a ProgramStep for registerStake operation.
 * Adds a RegCert (Conway-era) certificate to the transaction.
 * Requires keyDeposit from protocol parameters.
 *
 * @since 2.0.0
 * @category programs
 */
export declare const createRegisterStakeProgram: (params: RegisterStakeParams) => Effect.Effect<void, TransactionBuilderError, TxContext | TxBuilderConfigTag>;
/**
 * Creates a ProgramStep for delegateTo operation.
 * Delegates stake and/or voting power based on parameters provided.
 *
 * @deprecated Use delegateToPool, delegateToDRep, or delegateToPoolAndDRep instead
 * @since 2.0.0
 * @category programs
 */
export declare const createDelegateToProgram: (params: DelegateToParams) => Effect.Effect<void, TransactionBuilderError, TxContext>;
/**
 * Creates a ProgramStep for delegateToPool operation.
 * Adds a StakeDelegation certificate to delegate stake to a pool.
 *
 * For script-controlled credentials, tracks redeemer for evaluation.
 *
 * @since 2.0.0
 * @category programs
 */
export declare const createDelegateToPoolProgram: (params: DelegateToPoolParams) => Effect.Effect<void, TransactionBuilderError, TxContext>;
/**
 * Creates a ProgramStep for delegateToDRep operation.
 * Adds a VoteDelegCert certificate to delegate voting power to a DRep.
 *
 * For script-controlled credentials, tracks redeemer for evaluation.
 *
 * @since 2.0.0
 * @category programs
 */
export declare const createDelegateToDRepProgram: (params: DelegateToDRepParams) => Effect.Effect<void, TransactionBuilderError, TxContext>;
/**
 * Creates a ProgramStep for delegateToPoolAndDRep operation.
 * Adds a StakeVoteDelegCert certificate to delegate both stake and voting power.
 *
 * For script-controlled credentials, tracks redeemer for evaluation.
 *
 * @since 2.0.0
 * @category programs
 */
export declare const createDelegateToPoolAndDRepProgram: (params: DelegateToPoolAndDRepParams) => Effect.Effect<void, TransactionBuilderError, TxContext>;
/**
 * Creates a ProgramStep for registerAndDelegateTo operation.
 * Combines registration and delegation into a single certificate, saving fees.
 *
 * Supports three modes:
 * - Pool only: Creates StakeRegDelegCert certificate
 * - DRep only: Creates VoteRegDelegCert certificate (Conway)
 * - Both: Creates StakeVoteRegDelegCert certificate (Conway)
 *
 * For script-controlled credentials, tracks redeemer for evaluation.
 *
 * @since 2.0.0
 * @category programs
 */
export declare const createRegisterAndDelegateToProgram: (params: RegisterAndDelegateToParams) => Effect.Effect<void, TransactionBuilderError, TxContext | TxBuilderConfigTag>;
/**
 * Creates a ProgramStep for deregisterStake operation.
 * Adds an UnregCert (Conway-era) certificate to the transaction.
 * Requires keyDeposit from protocol parameters for the refund.
 *
 * For script-controlled credentials, tracks redeemer for evaluation.
 *
 * @since 2.0.0
 * @category programs
 */
export declare const createDeregisterStakeProgram: (params: DeregisterStakeParams) => Effect.Effect<void, TransactionBuilderError, TxContext | TxBuilderConfigTag>;
/**
 * Creates a ProgramStep for withdraw operation.
 * Adds a withdrawal entry to the transaction.
 *
 * For script-controlled credentials, tracks redeemer for evaluation.
 * Use amount: 0n to trigger stake validator without withdrawing (coordinator pattern).
 *
 * @since 2.0.0
 * @category programs
 */
export declare const createWithdrawProgram: (params: WithdrawParams) => Effect.Effect<void, TransactionBuilderError, TxContext | TxBuilderConfigTag>;
//# sourceMappingURL=Stake.d.ts.map