// Generated by dts-bundle-generator v9.5.1

interface Document$1 {
	id: number;
	title: string;
	content: string;
	tags: number[];
	document_type: number | null;
	correspondent: number | null;
	created: string;
	created_date?: string;
	modified: string;
	added: string;
	archive_serial_number?: string;
	original_file_name: string;
	archived_file_name: string | null;
	notes: Note[];
	page_count: number;
	set_permissions?: Permissions$1;
	custom_fields: CustomFieldValue[];
}
export interface Note {
	id: number;
	content: string;
	created: string;
	modified: string;
}
interface Permissions$1 {
	view?: {
		users?: number[];
		groups?: number[];
	};
	change?: {
		users?: number[];
		groups?: number[];
	};
}
export interface CustomFieldValue {
	field: number;
	value: string;
}
export interface Tag {
	id: number;
	name: string;
	slug: string;
	colour: string;
	match: string;
	matching_algorithm: string;
}
export interface Correspondent {
	id: number;
	name: string;
	slug: string;
	match: string;
	matching_algorithm: string;
}
interface DocumentType$1 {
	id: number;
	name: string;
	slug: string;
	match: string;
	matching_algorithm: string;
}
export interface CustomField {
	id: number;
	name: string;
	slug: string;
	model: string;
	type: string;
	required: boolean;
	default: string;
	choices: string[];
}
export interface User {
	id: number;
	username: string;
	email: string;
	first_name: string;
	last_name: string;
	is_active: boolean;
	is_staff: boolean;
	is_superuser: boolean;
	groups: number[];
	user_permissions: number[];
}
export interface Group {
	id: number;
	name: string;
	permissions: number[];
}
export interface ShareLink {
	id: number;
	document: number;
	slug: string;
	created: string;
	expires: string | null;
	is_active: boolean;
}
export interface StoragePath {
	id: number;
	path: string;
	description: string;
	is_default: boolean;
}
export interface Workflow {
	id: number;
	name: string;
	description: string;
	enabled: boolean;
	trigger: string;
	conditions: WorkflowCondition[];
	actions: WorkflowAction[];
}
export interface WorkflowCondition {
	id: number;
	workflow: number;
	field: string;
	operator: string;
	value: string;
}
export interface WorkflowAction {
	id: number;
	workflow: number;
	type: string;
	parameters: Record<string, any>;
}
export declare class PaperlessClient {
	private readonly baseUrl;
	private readonly token;
	constructor(baseUrl: string, token: string);
	private request;
	getDocuments(): Promise<Document$1[]>;
	getDocument(id: number): Promise<Document$1>;
	createDocument(document: Partial<Document$1>): Promise<Document$1>;
	updateDocument(id: number, document: Partial<Document$1>): Promise<Document$1>;
	deleteDocument(id: number): Promise<void>;
	getTags(): Promise<Tag[]>;
	getTag(id: number): Promise<Tag>;
	createTag(tag: Partial<Tag>): Promise<Tag>;
	updateTag(id: number, tag: Partial<Tag>): Promise<Tag>;
	deleteTag(id: number): Promise<void>;
	getCorrespondents(): Promise<Correspondent[]>;
	getCorrespondent(id: number): Promise<Correspondent>;
	createCorrespondent(correspondent: Partial<Correspondent>): Promise<Correspondent>;
	updateCorrespondent(id: number, correspondent: Partial<Correspondent>): Promise<Correspondent>;
	deleteCorrespondent(id: number): Promise<void>;
	getDocumentTypes(): Promise<DocumentType$1[]>;
	getDocumentType(id: number): Promise<DocumentType$1>;
	createDocumentType(documentType: Partial<DocumentType$1>): Promise<DocumentType$1>;
	updateDocumentType(id: number, documentType: Partial<DocumentType$1>): Promise<DocumentType$1>;
	deleteDocumentType(id: number): Promise<void>;
	getCustomFields(): Promise<CustomField[]>;
	getCustomField(id: number): Promise<CustomField>;
	createCustomField(customField: Partial<CustomField>): Promise<CustomField>;
	updateCustomField(id: number, customField: Partial<CustomField>): Promise<CustomField>;
	deleteCustomField(id: number): Promise<void>;
	getUsers(): Promise<User[]>;
	getUser(id: number): Promise<User>;
	createUser(user: Partial<User>): Promise<User>;
	updateUser(id: number, user: Partial<User>): Promise<User>;
	deleteUser(id: number): Promise<void>;
	getGroups(): Promise<Group[]>;
	getGroup(id: number): Promise<Group>;
	createGroup(group: Partial<Group>): Promise<Group>;
	updateGroup(id: number, group: Partial<Group>): Promise<Group>;
	deleteGroup(id: number): Promise<void>;
	getShareLinks(): Promise<ShareLink[]>;
	getShareLink(id: number): Promise<ShareLink>;
	createShareLink(shareLink: Partial<ShareLink>): Promise<ShareLink>;
	deleteShareLink(id: number): Promise<void>;
	getStoragePaths(): Promise<StoragePath[]>;
	getStoragePath(id: number): Promise<StoragePath>;
	createStoragePath(storagePath: Partial<StoragePath>): Promise<StoragePath>;
	updateStoragePath(id: number, storagePath: Partial<StoragePath>): Promise<StoragePath>;
	deleteStoragePath(id: number): Promise<void>;
	getWorkflows(): Promise<Workflow[]>;
	getWorkflow(id: number): Promise<Workflow>;
	createWorkflow(workflow: Partial<Workflow>): Promise<Workflow>;
	updateWorkflow(id: number, workflow: Partial<Workflow>): Promise<Workflow>;
	deleteWorkflow(id: number): Promise<void>;
}

export {
	Document$1 as Document,
	DocumentType$1 as DocumentType,
	Permissions$1 as Permissions,
};

export {};
