export type PhpNullish = null | undefined; export type PhpInput = {} | PhpNullish; export type PhpScalar = string | number | boolean; export type PhpLiteral = PhpScalar | null; export type PhpPrimitive = PhpScalar | bigint; export type PhpKey = string | number; export type NumericLike = number | bigint | string; export type StringLike = string | number | boolean | bigint; export type PhpStringish = StringLike | PhpNullish; export type PhpList = T[]; export type PhpAssoc = { [key: string]: T; }; export type PhpContainer = PhpList | PhpAssoc; export type PhpArrayLike = PhpList | PhpAssoc; export interface PhpRecursiveAssoc { [key: string]: PhpRecursiveValue; } export interface PhpRecursiveList extends Array { } export type PhpRecursiveValue = PhpPrimitive | PhpNullish | PhpRecursiveList | PhpRecursiveAssoc; export type PhpFunctionValue = (...args: PhpInput[]) => PhpInput; export interface PhpRuntimeAssoc { [key: string]: PhpRuntimeValue; } export interface PhpRuntimeList extends Array { } export type PhpRuntimeValue = PhpPrimitive | PhpNullish | PhpRuntimeList | PhpRuntimeAssoc | PhpFunctionValue; export type PhpReadonlyList = readonly T[]; export type PhpReadonlyAssoc = Readonly>; export type PhpReadonlyArrayLike = PhpReadonlyList | PhpReadonlyAssoc; export declare const entriesOfPhpAssoc: (value: PhpAssoc) => Array<[string, T]>; export declare function normalizeArrayKey(key: string): string | number; export type PhpCallableArgs = PhpInput[]; export type PhpCallable = (...args: TArgs) => TResult; export type PhpCallableScope = PhpInput; export type PhpCallableTuple = readonly [ PhpCallableScope, string | PhpCallable ]; export type PhpCallableDescriptor = string | PhpCallable | PhpCallableTuple; export type PhpComparatorDescriptor = PhpCallableDescriptor<[T, T], NumericLike>; export type PhpKeyComparatorDescriptor = PhpCallableDescriptor<[string, string], NumericLike>; export declare function isPhpNullish(value: PhpInput): value is PhpNullish; export declare function isPhpList(value: PhpInput): value is PhpList; export declare function isObjectLike(value: PhpInput): value is PhpArrayLike; export declare function isPhpAssocObject(value: PhpInput): value is PhpAssoc; export declare function isPhpScalar(value: PhpInput): value is PhpScalar; export declare function isPhpKey(value: PhpInput): value is PhpKey; export declare function isNumericLike(value: PhpInput): value is NumericLike; export declare function isPhpCallable(value: PhpInput): value is PhpCallable; export declare function isPhpCallableDescriptor(value: PhpInput): value is PhpCallableDescriptor; export declare function assertIsObjectLike(value: PhpInput, message?: string): asserts value is PhpArrayLike; export declare function assertIsPhpAssocObject(value: PhpInput, message?: string): asserts value is PhpAssoc; export declare function assertIsPhpList(value: PhpInput, message?: string): asserts value is PhpList; export declare function assertIsPhpKey(value: PhpInput, message?: string): asserts value is PhpKey; export declare function assertIsNumericLike(value: PhpInput, message?: string): asserts value is NumericLike; export declare function assertIsPhpCallable(value: PhpInput, message?: string): asserts value is PhpCallable; export declare function isPhpArrayObject(value: PhpInput): value is PhpAssoc; export declare function toPhpArrayObject(value: PhpInput): PhpAssoc;