import { Store } from '@ngrx/store';
import { CheckoutDeliveryFacade } from '@spartacus/checkout/root';
import { ActiveCartService, Address, DeliveryMode, StateUtils, StateWithProcess, UserIdService } from '@spartacus/core';
import { Observable } from 'rxjs';
import { StateWithCheckout } from '../store/checkout-state';
import * as i0 from "@angular/core";
export declare class CheckoutDeliveryService implements CheckoutDeliveryFacade {
    protected checkoutStore: Store<StateWithCheckout>;
    protected processStateStore: Store<StateWithProcess<void>>;
    protected activeCartService: ActiveCartService;
    protected userIdService: UserIdService;
    constructor(checkoutStore: Store<StateWithCheckout>, processStateStore: Store<StateWithProcess<void>>, activeCartService: ActiveCartService, userIdService: UserIdService);
    /**
     * Get supported delivery modes
     */
    getSupportedDeliveryModes(): Observable<DeliveryMode[]>;
    /**
     * Get selected delivery mode
     */
    getSelectedDeliveryMode(): Observable<DeliveryMode | undefined | null>;
    /**
     * Get selected delivery mode code
     */
    getSelectedDeliveryModeCode(): Observable<string>;
    /**
     * Get delivery address
     */
    getDeliveryAddress(): Observable<Address>;
    /**
     * Get status about successfully set Delivery Address
     */
    getSetDeliveryAddressProcess(): Observable<StateUtils.LoaderState<void>>;
    /**
     * Clear info about process of setting Delivery Address
     */
    resetSetDeliveryAddressProcess(): void;
    /**
     * Get status about of set Delivery Mode process
     */
    getSetDeliveryModeProcess(): Observable<StateUtils.LoaderState<void>>;
    /**
     * Clear info about process of setting Delivery Mode
     */
    resetSetDeliveryModeProcess(): void;
    /**
     * Clear info about process of setting Supported Delivery Modes
     */
    resetLoadSupportedDeliveryModesProcess(): void;
    /**
     * Get status about of set supported Delivery Modes process
     */
    getLoadSupportedDeliveryModeProcess(): Observable<StateUtils.LoaderState<void>>;
    /**
     * Clear supported delivery modes loaded in last checkout process
     */
    clearCheckoutDeliveryModes(): void;
    /**
     * Create and set a delivery address using the address param
     * @param address : the Address to be created and set
     */
    createAndSetAddress(address: Address): void;
    /**
     * Load supported delivery modes
     */
    loadSupportedDeliveryModes(): void;
    /**
     * Set delivery mode
     * @param mode : The delivery mode to be set
     */
    setDeliveryMode(mode: string): void;
    /**
     * Set delivery address
     * @param address : The address to be set
     */
    setDeliveryAddress(address: Address): void;
    /**
     * Clear address already setup in last checkout process
     */
    clearCheckoutDeliveryAddress(): void;
    /**
     * Clear selected delivery mode setup in last checkout process
     */
    clearCheckoutDeliveryMode(): void;
    /**
     * Clear address and delivery mode already setup in last checkout process
     */
    clearCheckoutDeliveryDetails(): void;
    protected actionAllowed(): boolean;
    static ɵfac: i0.ɵɵFactoryDeclaration<CheckoutDeliveryService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<CheckoutDeliveryService>;
}
