import { EventEmitter } from '../../../stencil-public-runtime';
import { VerdocsEndpoint } from '@verdocs/js-sdk';
import type { ICreateEnvelopeRecipient, IEnvelope, IRecipient, ITemplate } from '@verdocs/js-sdk';
import { IContactSearchEvent } from '../../envelopes/verdocs-contact-picker/verdocs-contact-picker';
import { SDKError } from '../../../utils/errors';
/**
 * Display a form to send a template to one or more recipients in an envelope for signing.
 * Host applications should ensure the template is "sendable" before displaying this component.
 * To be sendable, a template must have at least one document attached, at least one participant
 * defined, and at least one field assigned to every "signer" participant. This component will
 * hide itself if the template is not sendable.
 *
 * ```ts
 * <verdocs-send
 *   templateId={TEMPLATE_ID}
 *   onBeforeSend={({ detail })) => { console.log('Sending... Show a spinner...', detail) }
 *   onSend={({ detail }) => { console.log('Sent! Hide the spinner...', detail) }
 *   onExit={({ detail }) => { console.log('Send cancelled.', detail) }
 *   onSdkError={({ detail }) => { console.log('SDK error', detail) }
 *   />
 * ```
 */
export declare class VerdocsSend {
    private templateListenerId;
    /**
     * The endpoint to use to communicate with Verdocs. If not set, the default endpoint will be used.
     */
    endpoint: VerdocsEndpoint;
    /**
     * The ID of the template to create the document from.
     */
    templateId: string | null;
    /**
     * The environment the control is being called from, e.g. 'web'. This has an impact on how certain
     * operations such as email communications are handled to ensure users receive the correct URLs for
     * their invitations. Setting this to unknown values may produce unexpected/incorrect behaviors.
     * If environment is not known, do this set this property.
     */
    environment: string;
    /**
     * The user is sending an envelope the form and clicked send.
     */
    beforeSend: EventEmitter<{
        recipients: ICreateEnvelopeRecipient[];
        name: string;
        template_id: string;
        template: ITemplate;
    }>;
    /**
     * The user completed the form and clicked send.
     */
    send: EventEmitter<{
        recipients: ICreateEnvelopeRecipient[];
        name: string;
        template_id: string;
        envelope_id: string;
        envelope: IEnvelope;
    }>;
    /**
     * 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 if an error occurs. The event details will contain information about the error. Most errors will
     * terminate the process, and the calling application should correct the condition and re-render the component.
     */
    sdkError: EventEmitter<SDKError>;
    /**
     * Event fired when the user enters text in a search field. The parent application may use this to update
     * the `contactSuggestions` property.
     */
    searchContacts: EventEmitter<IContactSearchEvent>;
    containerId: string;
    showPickerForId: string;
    sessionContacts: any[];
    sending: boolean;
    rolesCompleted: Record<string, Partial<IRecipient>>;
    loading: boolean;
    template: ITemplate | null;
    disconnectedCallback(): void;
    listenToTemplate(): Promise<void>;
    unlistenToTemplate(): void;
    reset(): Promise<void>;
    onTemplateIdChanged(newTemplateId: string): void;
    componentWillLoad(): Promise<void>;
    recomputeRolesCompleted(): void;
    getSequenceNumbers(): number[];
    getRolesAtLevel(level: number): Partial<IRecipient>[];
    getLevelIcon(level: 'start' | 'end' | 'sequence'): any;
    handleSelectContact(e: any, role: Partial<IRecipient>): void;
    handleClickRole(e: any, role: Partial<IRecipient>): void;
    handleSend(e: any): void;
    handleCancel(e: any): void;
    render(): any;
}
