import { IGunChainReference } from './chain'; export declare type ArrayOf = T extends Array ? U : never; /** Gun does not accept Array value, so we need extract to make types correct */ export declare type AllowArray = ArrayOf extends never ? T : ArrayOf; export declare type DisallowArray = ArrayOf extends never ? T : never; /** These types cannot be stored on Gun */ export declare type AlwaysDisallowedType = T extends (...args: any[]) => void ? never : T extends { new (...args: any[]): any; } ? never : AccessObject; export declare type AccessObject = T extends object ? { [key in keyof T]: (AlwaysDisallowedType extends never ? never : AccessObject); } : T; /** These types cannot be stored on Gun's root level */ export declare type DisallowPrimitives = Open extends false ? T : T extends string ? never : T extends number ? never : T extends boolean ? never : T extends null ? never : T extends undefined ? never : T; export declare type ArrayAsRecord = ArrayOf extends never ? DataType : Record; export declare type Saveable = Partial | string | number | boolean | null | IGunChainReference; export declare type AckCallback = (ack: { err: Error; ok: any; } | { err: undefined; ok: string; }) => void; export declare type CryptoKeyPair = Record<'pub' | 'priv' | 'epub' | 'epriv', string>;