import { IConnection } from "./IConnection";
import { IIamportUser } from "./structures/IIamportUser";
/**
 * 아임포트 커넥터.
 *
 * 아임포트가 발급해주는 유저 인증 토큰에는, 유효 시간 {@link IIamportUser.expired_at} 이
 * 존재하여, 해당 시간을 초과하거든 기 발급 토큰이 만료되어 더 이상 쓸 수 없게 된다. 때문에
 * 아임포트 API 를 호출할 때마다, 늘 토큰의 만료 시간을 신경 써줘야해서 매우 번거롭다.
 *
 * `IamportConnector` 는 이러한 번거로움을 없애기 위하여, 아임포트의 API 를 호출하기 위하여
 * {@link IConnection} 정보하기 위한 {@link IamportConnector.connect} 메서드를 호출할 때마다,
 * 아임포트 유저 인증 토큰의 만료 시간의 도래 여부를 계산하여 자동으로 갱신해주는 클래스이다.
 *
 * 따라서 아임포트 유저 토큰 고유의 시간 제한에 구애받지 않고, 아임포트의 API 들을 편하게 호출하고
 * 싶다면, 현재 `IamportConnector` 의 적극적인 사용을 권하는 바이다.
 *
 * @author Samchon
 */
export declare class IamportConnector {
    readonly host: string;
    readonly accessor: IIamportUser.IAccessor;
    readonly surplus: number;
    private readonly mutex_;
    private token_;
    /**
     * Initializer Constructor
     *
     * @param host 아임포트 서버의 host 주소
     * @param accessor 아임포트에서 발급해 준 API 및 secret 키
     * @param surplus 만료 일시로부터의 여분 시간, 기본값은 15,000 ms
     */
    constructor(host: string, accessor: IIamportUser.IAccessor, surplus?: number);
    /**
     * 커넥션 정보 구성하기.
     *
     * 아임포트 API 를 호출하기 위한 {@link IConnection} 정보를 구성하여 리턴한다. 이 커넥션
     * 정보에는 아임포트의 유저 인증 토큰이 함께하는데, 만일 해당 유저 인증 토큰의 만료 일시가
     * 도래했다면, 이를 새로운 것으로 자동 갱신해준다.
     *
     * @returns 커넥션 정보 with 인증 토큰
     */
    get(): Promise<IConnection>;
    private getToken;
}
