import { TokenRequest } from "./request/TokenRequest";
import { TokenResponse } from "./response/TokenResponse";
import { SearchcodeResponse } from "./response/SearchcodeResponse";
import { SearchcodeRequest } from "./request/SearchcodeRequest";
import { AddresszipRequest } from "./request/AddresszipRequest";
import { AddresszipResponse } from "./response/AddresszipResponse";
import { RetryOptions, CircuitBreakerOptions } from "./retry";
export interface JapanPostTokenInitOptions {
    client_id: string;
    secret_key: string;
}
export interface JapanPostAPIOptions {
    baseUrl?: string;
    autoTokenRefresh?: boolean;
    /** Retry configuration */
    retryOptions?: RetryOptions;
    /** Circuit breaker configuration */
    circuitBreakerOptions?: CircuitBreakerOptions;
    /** Whether to enable validation (default: true) */
    enableValidation?: boolean;
}
type TokenInit = string | JapanPostTokenInitOptions;
export declare class JapanPostAPI {
    #private;
    constructor(tokenInit: TokenInit, options?: JapanPostAPIOptions);
    initToken(options?: JapanPostTokenInitOptions): Promise<void>;
    setToken(token: string): void;
    tokenExpired(): boolean;
    token(request?: TokenRequest): Promise<TokenResponse>;
    searchcode(request: SearchcodeRequest): Promise<SearchcodeResponse>;
    searchcodeAll(request: SearchcodeRequest): AsyncGenerator<SearchcodeResponse, void, unknown>;
    addresszip(request: AddresszipRequest): Promise<AddresszipResponse>;
    addresszipAll(request: AddresszipRequest): AsyncGenerator<AddresszipResponse, void, unknown>;
    /**
     * Update retry configuration
     */
    updateRetryOptions(options: RetryOptions): void;
    /**
     * Get circuit breaker state
     */
    getCircuitBreakerState(): {
        state: import("./retry").CircuitBreakerState;
        failureCount: number;
    };
    /**
     * Reset circuit breaker
     */
    resetCircuitBreaker(): void;
}
export {};
//# sourceMappingURL=JapanPostAPI.d.ts.map