@layr-labs/hourglass-performer
Version:
TypeScript SDK for building Hourglass AVS performers
92 lines • 2.58 kB
TypeScript
import { ParamType } from 'ethers';
/**
* ABI function signature information
*/
export interface AbiFunctionInfo {
/** Function name */
name: string;
/** Function signature (e.g., "processTask(uint256,bytes32,address)") */
signature: string;
/** Input parameter types */
inputs: readonly ParamType[];
/** Output parameter types */
outputs: readonly ParamType[];
/** Function selector (first 4 bytes of keccak256 hash) */
selector: string;
}
/**
* ABI codec for encoding/decoding Solidity function calls
*/
export declare class AbiCodec {
private abiCoder;
private contractInterface;
private functionInfo;
constructor(abi: any[]);
/**
* Build function information from ABI
*/
private buildFunctionInfo;
/**
* Get function information by name
*/
getFunctionInfo(functionName: string): AbiFunctionInfo | undefined;
/**
* Get all available functions
*/
getAllFunctions(): AbiFunctionInfo[];
/**
* Decode function call data
*/
decodeFunctionCall(functionName: string, data: Uint8Array): any;
/**
* Encode function call data
*/
encodeFunctionCall(functionName: string, params: any[]): Uint8Array;
/**
* Decode function result
*/
decodeFunctionResult(functionName: string, data: Uint8Array): any;
/**
* Encode function result
*/
encodeFunctionResult(functionName: string, result: any): Uint8Array;
/**
* Detect if data looks like ABI-encoded function call
*/
static isAbiEncoded(data: Uint8Array): boolean;
/**
* Try to detect function from encoded data
*/
detectFunction(data: Uint8Array): string | null;
}
/**
* Utility functions for common Solidity types
*/
export declare class SolidityTypeUtils {
/**
* Convert JavaScript value to Solidity type
*/
static toSolidityType(value: any, solidityType: string): any;
/**
* Convert Solidity type to JavaScript value
*/
static fromSolidityType(value: any, solidityType: string): any;
/**
* Validate value against Solidity type
*/
static validateType(value: any, solidityType: string): boolean;
}
/**
* Auto-detect payload format and decode accordingly
*/
export declare class PayloadAutoDecoder {
/**
* Attempt to decode payload using multiple strategies
*/
static decode(payload: Uint8Array): {
format: 'abi' | 'json' | 'string' | 'raw';
data: any;
confidence: number;
};
}
//# sourceMappingURL=abiUtils.d.ts.map