/// import { types as rtypes } from "@algorand-builder/runtime"; import algosdk, { LogicSigArgs } from "algosdk"; import { txWriter } from "../internal/tx-log-writer"; import type { ASAInfo, ASCCache, FundASCFlags, LsigInfo, Network, SCParams, SSCInfo } from "../types"; import { CompileOp } from "./compile"; export declare const ALGORAND_MIN_TX_FEE = 1000; export declare function createAlgoOperator(network: Network): AlgoOperator; export interface AlgoOperator { algodClient: algosdk.Algodv2; deployASA: (name: string, asaDef: rtypes.ASADef, flags: rtypes.ASADeploymentFlags, accounts: rtypes.AccountMap, txWriter: txWriter) => Promise; fundLsig: (name: string, flags: FundASCFlags, payFlags: rtypes.TxParams, txWriter: txWriter, scParams: LogicSigArgs, scTmplParams?: SCParams) => Promise; deploySSC: (approvalProgram: string, clearProgram: string, flags: rtypes.SSCDeploymentFlags, payFlags: rtypes.TxParams, txWriter: txWriter, scTmplParams?: SCParams) => Promise; waitForConfirmation: (txId: string) => Promise; optInAcountToASA: (asaName: string, assetIndex: number, account: rtypes.Account, params: rtypes.TxParams) => Promise; optInLsigToASA: (asaName: string, assetIndex: number, lsig: algosdk.LogicSig, params: rtypes.TxParams) => Promise; optInToASAMultiple: (asaName: string, asaDef: rtypes.ASADef, flags: rtypes.ASADeploymentFlags, accounts: rtypes.AccountMap, assetIndex: number) => Promise; optInToSSC: (sender: rtypes.Account, appId: number, payFlags: rtypes.TxParams, flags: rtypes.SSCOptionalFlags) => Promise; ensureCompiled: (name: string, force?: boolean, scTmplParams?: SCParams) => Promise; } export declare class AlgoOperatorImpl implements AlgoOperator { algodClient: algosdk.Algodv2; compileOp: CompileOp; constructor(algocl: algosdk.Algodv2); waitForConfirmation(txId: string): Promise; getTxFee(params: algosdk.SuggestedParams, txSize: number): number; getUsableAccBalance(accoutInfo: algosdk.AccountState): bigint; getOptInTxSize(params: algosdk.SuggestedParams, accounts: rtypes.AccountMap): number; _optInAcountToASA(asaName: string, assetIndex: number, account: rtypes.Account, params: algosdk.SuggestedParams): Promise; optInAcountToASA(asaName: string, assetIndex: number, account: rtypes.Account, flags: rtypes.TxParams): Promise; optInLsigToASA(asaName: string, assetIndex: number, lsig: algosdk.LogicSig, flags: rtypes.TxParams): Promise; optInToASAMultiple(asaName: string, asaDef: rtypes.ASADef, flags: rtypes.ASADeploymentFlags, accounts: rtypes.AccountMap, assetIndex: number): Promise; checkBalanceForOptInTx(name: string, params: algosdk.SuggestedParams, asaDef: rtypes.ASADef, accounts: rtypes.AccountMap, creator: rtypes.Account): Promise; deployASA(name: string, asaDef: rtypes.ASADef, flags: rtypes.ASADeploymentFlags, accounts: rtypes.AccountMap, txWriter: txWriter): Promise; /** * Sends Algos to ASC account (Contract Account) * @param name - ASC filename * @param flags - FundASC flags (as per SPEC) * @param payFlags - as per SPEC * @param txWriter - transaction log writer * @param scParams: Smart contract Parameters(Used while calling smart contract) * @param scTmplParams: Smart contract template parameters (used only when compiling PyTEAL to TEAL) */ fundLsig(name: string, flags: FundASCFlags, payFlags: rtypes.TxParams, txWriter: txWriter, scParams: LogicSigArgs, scTmplParams?: SCParams): Promise; /** * Function to deploy Stateful Smart Contract * @param approvalProgram name of file in which approval program is stored * @param clearProgram name of file in which clear program is stored * @param flags SSCDeploymentFlags * @param payFlags TxParams * @param txWriter * @param scTmplParams: Smart contract template parameters (used only when compiling PyTEAL to TEAL) */ deploySSC(approvalProgram: string, clearProgram: string, flags: rtypes.SSCDeploymentFlags, payFlags: rtypes.TxParams, txWriter: txWriter, scTmplParams?: SCParams): Promise; /** * Opt-In to stateful smart contract * @param sender: Account for which opt-in is required * @param appId: Application Index: (ID of the application) * @param payFlags: Transaction Params * @param flags Optional parameters to SSC (accounts, args..) */ optInToSSC(sender: rtypes.Account, appId: number, payFlags: rtypes.TxParams, flags: rtypes.SSCOptionalFlags): Promise; ensureCompiled(name: string, force?: boolean, scTmplParams?: SCParams): Promise; }