import { MoveFunctionId, MoveStructId } from "../types/index.js"; import { AccountAddress } from "../core/accountAddress.js"; /** * Narrows a u64 (`bigint`) into a JS `number` with an explicit safety check. * * The `deserializeU64` reader returns `bigint`, but several keyless code * paths historically narrowed the value with `Number(value)` to fit existing * `number`-typed fields (expiry timestamps, expiry horizons). For values * larger than `Number.MAX_SAFE_INTEGER` (~9 × 10^15), `Number(bigint)` * silently loses precision — comparisons against `Date.now() / 1000` then * return wrong results. * * Real-world expiry values are far below the unsafe range (year ~285 million * AD as a Unix timestamp), so this check is effectively a guard against * corrupted or malicious BCS data rather than a precision concern in normal * operation. Throwing is correct behavior at the BCS/JSON boundary. */ export declare function u64ToNumberSafe(value: bigint, fieldName: string): number; /** * Checks if the current runtime environment is Bun. * This is useful for detecting Bun-specific compatibility issues. * * @returns true if running in Bun, false otherwise. * @group Implementation * @category Utils */ export declare function isBun(): boolean; /** * Read an environment variable in a runtime-agnostic way. Returns `undefined` when * `process.env` is not available (browsers, some bundlers) or the variable is unset. * * @group Implementation * @category Utils */ export declare function getEnvVar(name: string): string | undefined; /** * Logs a warning message to the console only in development environments. * This function helps reduce information leakage in production while maintaining * helpful warnings during development. * * @param message - The warning message to log. * @group Implementation * @category Utils */ export declare function warnIfDevelopment(message: string): void; /** * Sleep for the specified amount of time in milliseconds. * This function can be used to introduce delays in asynchronous operations. * * @param timeMs - The time in milliseconds to sleep. * @group Implementation * @category Utils */ export declare function sleep(timeMs: number): Promise; /** * Get the error message from an unknown error. * * @param error The error to get the message from * @returns The error message * @group Implementation * @category Utils */ export declare function getErrorMessage(error: unknown): string; /** * @group Implementation * @category Utils */ export declare const nowInSeconds: () => number; /** * Floors the given timestamp to the nearest whole hour. * This function is useful for normalizing timestamps to hourly intervals. * * @param timestampInSeconds - The timestamp in seconds to be floored. * @group Implementation * @category Utils */ export declare function floorToWholeHour(timestampInSeconds: number): number; /** * Decodes a base64 URL-encoded string into its original form. * This function is useful for converting base64 URL-encoded data back to a readable format. * * @param base64Url - The base64 URL-encoded string to decode. * @returns The decoded string. * @group Implementation * @category Utils */ export declare function base64UrlDecode(base64Url: string): string; /** * Encode a string or byte array as a base64url string (RFC 4648 §5) with no padding. * * @param input - The data to encode. Strings are interpreted as UTF-8. * @returns The base64url-encoded string. * @group Implementation * @category Utils */ export declare function base64UrlEncode(input: string | Uint8Array): string; export declare function base64UrlToBytes(base64Url: string): Uint8Array; /** * Amount is represented in the smallest unit format on chain, this function converts * a human-readable amount format to the smallest unit format * @example * human-readable amount format: 500 * on chain amount format when decimal is 8: 50000000000 * * @param value The value in human-readable format * @param decimal The token decimal * @returns The value in the smallest units * @group Implementation * @category Utils */ export declare const convertAmountFromHumanReadableToOnChain: (value: number, decimal: number) => number; /** * Amount is represented in the smallest unit format on chain, this function converts * the smallest unit format to a human-readable amount format * @example * human-readable amount format: 500 * on chain amount format when decimal is 8: 50000000000 * * @param value The value in human-readable format * @param decimal The token decimal * @returns The value in the smallest units * @group Implementation * @category Utils */ export declare const convertAmountFromOnChainToHumanReadable: (value: number, decimal: number) => number; /** * Convert an encoded struct to a MoveStructId. * * @example * const structObj = { * account_address: "0x1", * module_name: "0x6170746f735f636f696e", * struct_name: "0x4170746f73436f696e", * }; * // structId is "0x1::aptos_coin::AptosCoin" * const structId = parseEncodedStruct(structObj); * * @param structObj The struct with account_address, module_name, and struct_name properties * @returns The MoveStructId * @group Implementation * @category Utils */ export declare const parseEncodedStruct: (structObj: { account_address: string; module_name: string; struct_name: string; }) => MoveStructId; /** * Determines whether the given object is an encoded struct type with the following properties: * - account_address: string * - module_name: string * - struct_name: string * * @param structObj The object to check * @returns Whether the object is an encoded struct type * @group Implementation * @category Utils */ export declare const isEncodedStruct: (structObj: any) => structObj is { account_address: string; module_name: string; struct_name: string; }; /** * Splits a function identifier into its constituent parts: module address, module name, and function name. * This function helps in validating and extracting details from a function identifier string. * * @param functionArg - The function identifier string in the format "moduleAddress::moduleName::functionName". * @returns An object containing the module address, module name, and function name. * @throws Error if the function identifier does not contain exactly three parts. * @group Implementation * @category Transactions */ export declare function getFunctionParts(functionArg: MoveFunctionId): { moduleAddress: string; moduleName: string; functionName: string; }; /** * Validates the provided function information. * * @param functionInfo - The function information to validate. * @returns Whether the function information is valid. * @group Implementation * @category Utils */ export declare function isValidFunctionInfo(functionInfo: string): boolean; /** * Truncates the provided wallet address at the middle with an ellipsis. * * @param address - The wallet address to truncate. * @param start - The number of characters to show at the beginning of the address. * @param end - The number of characters to show at the end of the address. * @returns The truncated address. * @group Implementation * @category Utils */ export declare function truncateAddress(address: string, start?: number, end?: number): string; /** * Calculates the paired FA metadata address for a given coin type. * This function is tolerant of various address formats in the coin type string, * including complex nested types. * * @example * // All these formats are valid and will produce the same result: * pairedFaMetadataAddress("0x1::aptos_coin::AptosCoin") // simple form * pairedFaMetadataAddress("0x0000000000000000000000000000000000000000000000000000000000000001::aptos_coin::AptosCoin") // long form * pairedFaMetadataAddress("0x00001::aptos_coin::AptosCoin") // with leading zeros * pairedFaMetadataAddress("0x1::coin::Coin<0x1412::a::struct<0x0001::aptos_coin::AptosCoin>>") // nested type parameters * * @param coinType - The coin type string in any of these formats: * - Short form address: "0x1::aptos_coin::AptosCoin" * - Long form address: "0x0000000000000000000000000000000000000000000000000000000000000001::aptos_coin::AptosCoin" * - With leading zeros: "0x00001::aptos_coin::AptosCoin" * - With nested types: "0x1::coin::Coin<0x1412::a::struct<0x0001::aptos_coin::AptosCoin>>" * @returns The calculated metadata address as an AccountAddress instance */ export declare function pairedFaMetadataAddress(coinType: `0x${string}::${string}::${string}`): AccountAddress; //# sourceMappingURL=helpers.d.ts.map