import { ABIType } from './abi_type.js'; import { ABITransactionType } from './transaction.js'; import { ABIReferenceType } from './reference.js'; import { ARC28Event } from './event.js'; export interface ABIMethodArgParams { type: string; name?: string; desc?: string; } export interface ABIMethodReturnParams { type: string; desc?: string; } export interface ABIMethodParams { name: string; desc?: string; args: ABIMethodArgParams[]; returns: ABIMethodReturnParams; /** Optional, is it a read-only method (according to [ARC-22](https://arc.algorand.foundation/ARCs/arc-0022)) */ readonly?: boolean; /** [ARC-28](https://arc.algorand.foundation/ARCs/arc-0028) events that MAY be emitted by this method */ events?: ARC28Event[]; } export type ABIArgumentType = ABIType | ABITransactionType | ABIReferenceType; export type ABIReturnType = ABIType | 'void'; export declare class ABIMethod { readonly name: string; readonly description?: string; readonly args: Array<{ type: ABIArgumentType; name?: string; description?: string; }>; readonly returns: { type: ABIReturnType; description?: string; }; readonly events?: ARC28Event[]; readonly readonly?: boolean; constructor(params: ABIMethodParams); getSignature(): string; getSelector(): Uint8Array; txnCount(): number; toJSON(): ABIMethodParams; static fromSignature(signature: string): ABIMethod; } export declare function getMethodByName(methods: ABIMethod[], name: string): ABIMethod;