import { EventEmitter } from '../../../stencil-public-runtime';
import { IEntitlement, IProfile, IRecipient, TEntitlement, TRecipientAuthMethod, VerdocsEndpoint } from '@verdocs/js-sdk';
import { IFeatureFlags } from '../../../utils/Unleash';
export interface IContactSearchEvent {
    query: string;
}
export interface IContactSelectEvent {
    first_name: string;
    last_name: string;
    email: string;
    phone: string;
    message: string;
    delegator: boolean;
    auth_methods: TRecipientAuthMethod[];
    passcode: string;
    address: string;
    zip: string;
}
export type TPickerContact = Partial<IProfile>;
/**
 * Display a contact picker suitable for filling out Recipient objects when sending Envelopes.
 *
 * This picker can also be integrated with a backend to provide contact list / suggestion / address-book style behavior. As the
 * user interacts with the component, the text entered in the name fields is sent back to the parent via the `searchContacts` event.
 * The parent can use that text as a query string to call a backend to obtain appropriate contacts to show. This list may also be
 * hard-coded ahead of time to provide the user with smart suggestions on initial display, such as "Recently Used" contacts, or
 * to always display the user's own contact record.
 *
 * ```ts
 * <verdocs-contact-picker
 *   templateRole={role}
 *   contactSuggestions={[]}
 *   onNext={e => console.log('Contact completed', e.detail)}
 *   />
 * ```
 */
export declare class VerdocsContactPicker {
    /**
     * The endpoint to use to communicate with Verdocs. If not set, the default endpoint will be used.
     */
    endpoint: VerdocsEndpoint;
    /**
     * The role that this contact will be assigned to.
     */
    templateRole: Partial<IRecipient> | null;
    /**
     * If set, suggestions will be displayed in a drop-down list to the user. It is recommended that the number
     * of suggestions be limited to the 5 best matching records.
     */
    contactSuggestions: TPickerContact[];
    /**
     * Event fired when the user enters text in the search field. The calling application may use this to update
     * the `contactSuggestions` property.
     */
    searchContacts: EventEmitter<IContactSearchEvent>;
    /**
     * Event fired when the step is cancelled. This is called exit to avoid conflicts with the JS-reserved "cancel" event name.
     */
    exit: EventEmitter;
    /**
     * Event fired when the user changes the type.
     */
    next: EventEmitter<IContactSelectEvent>;
    first_name: string;
    last_name: string;
    email: string;
    phone: string;
    zip: string;
    address: string;
    message: string;
    showSuggestions: boolean;
    showMessage: boolean;
    delegator: boolean;
    auth_methods: TRecipientAuthMethod[];
    passcode: string;
    firstNameFieldId: string;
    lastNameFieldId: string;
    emailFieldId: string;
    phoneFieldId: string;
    featureFlags: IFeatureFlags;
    activeEntitlements: Partial<Record<TEntitlement, IEntitlement>>;
    componentWillLoad(): void;
    handleFirstNameChange(e: any): void;
    handleLastNameChange(e: any): void;
    handleCancel(e: any): void;
    handleSubmit(e: any): void;
    handleSelectSuggestion(e: any, suggestion: TPickerContact): void;
    render(): any;
}
