72 lines
1.7 KiB
TypeScript
72 lines
1.7 KiB
TypeScript
/// <reference types="vite/client" />
|
|
|
|
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<EncryptedAttachment>;
|
|
|
|
export function decryptAttachment(
|
|
dataBuffer: ArrayBuffer,
|
|
info: EncryptedAttachmentInfo
|
|
): Promise<ArrayBuffer>;
|
|
}
|
|
|
|
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<void>;
|
|
|
|
stop(): Promise<void>;
|
|
|
|
readonly audioContext?: AudioContext;
|
|
}
|
|
}
|