///
///
import { LogicSigBase, MultiSig, MultiSigAccount } from "algosdk";
/**
* Note: We cannot use algosdk LogicSig class here,
* because algosdk.makeLogicSig() takes compiled bytes as a argument
* and currently we don't calculate compiled bytes from TEAL program.
* We are using raw TEAL code as program.(by converting string into bytes)
*/
export declare class LogicSig {
tag: Buffer;
logic: Uint8Array;
args: Uint8Array[];
sig: Uint8Array;
msig: MultiSig | undefined;
lsigAddress: string;
constructor(program: string, args: Uint8Array[]);
/**
* Creates signature (if no msig provided) or multi signature otherwise
* @param secretKey sender's secret key
* @param msig multisignature if it exists
*/
sign(secretKey: Uint8Array, msig?: MultiSigAccount): void;
/**
* Sign Multisignature
* @param secretKey Secret key to sign with
* @param msig Multisignature
*/
singleSignMultisig(secretKey: Uint8Array, msig: MultiSig): [Uint8Array, number];
/**
* Appends a signature to multi signature
* @param {Uint8Array} secretKey Secret key to sign with
*/
appendToMultisig(secretKey: Uint8Array): void;
/**
* Performs signature verification
* @param accAddr Sender's account address
*/
verify(accPk: Uint8Array): boolean;
/**
* Verify multi-signature
* @param msig Msig
* @param accAddr Sender's account address
*/
verifyMultisig(msig: MultiSig, accAddr: string): boolean;
/**
* Returns signed logic
* @param secretKey: account's secret key
*/
signProgram(secretKey: Uint8Array): Uint8Array;
/**
* Returns logic signature address
*/
address(): string;
/**
* Returns program associated with logic signature
*/
program(): string;
/**
* Note: following functions are dummy functions
* they are used only to match type with algosdk LogicSig
* there is a possibility that we may use them in future.
*/
toByte(): Uint8Array;
fromByte(val: Uint8Array): LogicSig;
get_obj_for_encoding(): LogicSigBase;
from_obj_for_encoding(lsig: LogicSigBase): LogicSig;
}