import { Buff, Bytes } from '@cmdcode/buff';
import { TxPrevout } from '@scrow/tapscript';
import { AgentSession, ContractData, CovenantData, DepositContext, DepositData, MutexContext, MutexEntry, ReturnData, SignerAPI, TxOutput } from '../types/index.js';
export declare function create_session(agent: SignerAPI, record_id: string): AgentSession;
export declare function create_covenant(context: DepositContext, contract: ContractData, signer: SignerAPI, txout: TxOutput): CovenantData;
export declare function create_return(address: string, deposit: DepositData, signer: SignerAPI, txfee: number): ReturnData;
export declare function get_path_mutexes(context: DepositContext, contract: ContractData, pnonces: Bytes[], txout: TxOutput): MutexEntry[];
export declare function get_return_mutex(deposit: DepositData, pnonces: Bytes[], txhex: string): MutexContext;
export declare function get_mutex_ctx(context: DepositContext, output: string, pnonces: Bytes[], sid: Bytes, txinput: TxPrevout): MutexContext;
export declare function get_session_id(agent_id: Bytes, record_id: Bytes): Buff;
export declare function get_session_pnonce(agent_id: Bytes, record_id: Bytes, signer: SignerAPI): Buff;
export declare function get_session_tweak(sid: Bytes, pnonces: Bytes[], sighash: Bytes): Buff;
export declare function tweak_pnonces(keys: Bytes[], tweak: Bytes): Buff[];
export declare function tweak_pnonce(key: Bytes, tweak: Bytes): Buff;
export declare function create_psigs(mutexes: MutexEntry[], signer: SignerAPI): [string, string][];
export declare function create_mutex_psig(context: MutexContext, signer: SignerAPI): string;
export declare function verify_mutex_psigs(mutexes: MutexEntry[], psigs: [string, string][]): void;
export declare function verify_mutex_psig(ctx: MutexContext, psig: Bytes): boolean;
