import { AbsContact } from 'scriptable-abstract'; /** * Interface for contact's email addresses */ interface ContactEmailAddress { identifier?: string; label?: string; localizedLabel?: string; value: string; } /** * Interface for contact's phone numbers */ interface ContactPhoneNumber { identifier?: string; label?: string; localizedLabel?: string; value: string; } /** * Interface for contact's postal addresses */ interface ContactPostalAddress { identifier?: string; label: string; localizedLabel: string; street: string; city: string; state: string; postalCode: string; country: string; } /** * Interface for contact's social profiles */ interface ContactSocialProfile { identifier?: string; label: string; localizedLabel: string; service: string; url: string; userIdentifier: string; username: string; } /** * State interface for Contact mock */ interface ContactState { identifier: string; namePrefix: string; givenName: string; middleName: string; familyName: string; nickname: string; birthday: Date | null; image: any | null; emailAddresses: ContactEmailAddress[]; phoneNumbers: ContactPhoneNumber[]; postalAddresses: ContactPostalAddress[]; socialProfiles: ContactSocialProfile[]; note: string; urlAddresses: Array<{ [key: string]: string; }>; dates: Array<{ [key: string]: any; }>; organizationName: string; departmentName: string; jobTitle: string; isNamePrefixAvailable: boolean; isGiveNameAvailable: boolean; isGivenNameAvailable: boolean; isMiddleNameAvailable: boolean; isFamilyNameAvailable: boolean; isNicknameAvailable: boolean; isBirthdayAvailable: boolean; isEmailAddressesAvailable: boolean; isPhoneNumbersAvailable: boolean; isPostalAddressesAvailable: boolean; isSocialProfilesAvailable: boolean; isImageAvailable: boolean; isNoteAvailable: boolean; isURLAddressesAvailable: boolean; isOrganizationNameAvailable: boolean; isDepartmentNameAvailable: boolean; isJobTitleAvailable: boolean; isDatesAvailable: boolean; } /** * Mock implementation of Scriptable's Contact. * Represents a contact in the user's address book. */ declare class MockContact extends AbsContact { constructor(); /** * _Creates a new contact._ * @see https://docs.scriptable.app/contact/#new-contact */ static create(): MockContact; /** * _All contacts in the address book._ * @see https://docs.scriptable.app/contact/#all */ static all(): Promise; /** * _Contacts matching the specified name._ * @param name - Name to search for. * @see https://docs.scriptable.app/contact/#contactsnamed */ static contactsNamed(_name: string): Promise; /** * _Picks a contact._ * @see https://docs.scriptable.app/contact/#pickcontact */ static pickContact(): Promise; /** * _Picks multiple contacts._ * @see https://docs.scriptable.app/contact/#pickcontacts */ static pickContacts(): Promise; /** * _Saves the contact._ * @see https://docs.scriptable.app/contact/#-save */ save(): Promise; /** * _Removes the contact._ * @see https://docs.scriptable.app/contact/#-remove */ remove(): Promise; get identifier(): string; get namePrefix(): string; set namePrefix(value: string); get givenName(): string; set givenName(value: string); get middleName(): string; set middleName(value: string); get familyName(): string; set familyName(value: string); get nickname(): string; set nickname(value: string); get birthday(): Date | null; set birthday(value: Date | null); get image(): any | null; set image(value: any | null); get emailAddresses(): ContactEmailAddress[]; set emailAddresses(value: ContactEmailAddress[]); get phoneNumbers(): ContactPhoneNumber[]; set phoneNumbers(value: ContactPhoneNumber[]); get postalAddresses(): ContactPostalAddress[]; set postalAddresses(value: ContactPostalAddress[]); get socialProfiles(): ContactSocialProfile[]; set socialProfiles(value: ContactSocialProfile[]); get note(): string; set note(value: string); get urlAddresses(): Array<{ [key: string]: string; }>; set urlAddresses(value: Array<{ [key: string]: string; }>); get dates(): Array<{ [key: string]: any; }>; set dates(value: Array<{ [key: string]: any; }>); get organizationName(): string; set organizationName(value: string); get departmentName(): string; set departmentName(value: string); get jobTitle(): string; set jobTitle(value: string); get isNamePrefixAvailable(): boolean; get isGivenNameAvailable(): boolean; get isMiddleNameAvailable(): boolean; get isFamilyNameAvailable(): boolean; get isNicknameAvailable(): boolean; get isBirthdayAvailable(): boolean; get isEmailAddressesAvailable(): boolean; get isPhoneNumbersAvailable(): boolean; get isPostalAddressesAvailable(): boolean; get isSocialProfilesAvailable(): boolean; get isImageAvailable(): boolean; get isNoteAvailable(): boolean; get isURLAddressesAvailable(): boolean; get isOrganizationNameAvailable(): boolean; get isDepartmentNameAvailable(): boolean; get isJobTitleAvailable(): boolean; get isDatesAvailable(): boolean; } export { type ContactEmailAddress, type ContactPhoneNumber, type ContactPostalAddress, type ContactSocialProfile, type ContactState, MockContact };