import * as nacl from "tweetnacl"; import { Resource, ResourceType } from "./ResourceAPI"; import { api } from "./proto"; import { Encryptor, CipherType } from "./Cryptor"; import { IdentityPublicKey } from "./IdentityAPI"; import { ID } from "./ID"; import { IdentityKeySet } from "./IdentityKeySet"; import { IdentityKeySetManager } from "./IdentityKeySetManager"; import { PublicKeysManager } from "./PublicKeyManager"; export declare class ResourceBox implements Resource { id: ID; kind: string; type: ResourceType; payload: T; creator: IdentityPublicKey; private keypair; constructor(id: ID, kind: string, payload: T, keypair: nacl.BoxKeyPair, creator: IdentityPublicKey, type?: ResourceType); publicKey(): Uint8Array; encrypt(content: T): T; private encryptUint8Array(content); private encryptString(clear); decrypt(message: T): T; private decryptUint8Array(message); private decryptString(cipher); } export declare function createWithEncryption(payload: T, encryption: IdentityKeySet, kind: string, options?: { serialize?: ((payload: T) => Uint8Array); }): { resourceRequestBody: api.IResourcePostRequest; resource: ResourceBox; }; export declare function makeResourceFromResponse({resource, owner, creator, encryptedKey}: api.IResourceGetResponse, typeOfKey: CipherType, publicKeyManager: PublicKeysManager, keySetManager: IdentityKeySetManager, parse?: any): Promise>; export declare function makeResource({resource, encryptedKey, creator}: api.IResourceGetResponse, publicKeyManager: PublicKeysManager, ownerKeySet: IdentityKeySet, typeOfKey: CipherType, parse?: (u: any) => any): Promise>; export declare function makeResourcesFromResponses(resources: api.IResourceGetResponse[], keySetManager: IdentityKeySetManager, publicKeyManager: PublicKeysManager, parse?: any): Promise[]>; export declare function createBodyRequest(payload: T, sharingGroup: string[], crypto: Encryptor, publicKeyManager: PublicKeysManager, options?: { serialize?: ((payload: T) => Uint8Array); }): Promise<{ keypair: nacl.BoxKeyPair; body: { payload: Uint8Array; nonce: Uint8Array; publicKey: Uint8Array; sharingGroup: { login: string; version: number; nonce: Uint8Array; encryptedKey: Uint8Array; }[]; }; }>; export declare function encryptForSharingGroup(text: Uint8Array, sharingGroup: string[], crypto: Encryptor, publicKeyManager: PublicKeysManager): Promise<{ login: string; version: number; nonce: Uint8Array; encryptedKey: Uint8Array; }[]>;