///
declare const __APP_VERSION__: string;
declare module 'browser-encrypt-attachment' {
export interface EncryptedAttachmentInfo {
v: string;
key: {
alg: string;
key_ops: string[];
kty: string;
k: string;
ext: boolean;
};
iv: string;
hashes: {
[alg: string]: string;
};
}
export interface EncryptedAttachment {
data: ArrayBuffer;
info: EncryptedAttachmentInfo;
}
export function encryptAttachment(dataBuffer: ArrayBuffer): Promise;
export function decryptAttachment(
dataBuffer: ArrayBuffer,
info: EncryptedAttachmentInfo
): Promise;
}
declare module '*.svg' {
const content: string;
export default content;
}
// opus-recorder ships no types. We only touch a small slice of the API: the
// constructor config, start/stop, and the data/stop callbacks. See
// docs/plans/voice_messages.md ยง3 (Phase 2).
declare module 'opus-recorder' {
export interface OpusRecorderConfig {
encoderPath?: string;
sourceNode?: MediaStreamAudioSourceNode;
encoderSampleRate?: number;
numberOfChannels?: number;
encoderApplication?: number;
encoderBitRate?: number;
encoderFrameSize?: number;
maxFramesPerPage?: number;
resampleQuality?: number;
streamPages?: boolean;
mediaTrackConstraints?: boolean | MediaTrackConstraints;
}
export default class Recorder {
constructor(config?: OpusRecorderConfig);
ondataavailable: ((data: Uint8Array) => void) | null;
onstart: (() => void) | null;
onstop: (() => void) | null;
start(): Promise;
stop(): Promise;
readonly audioContext?: AudioContext;
}
}