/**
    The base Action class that all other composite actions should
    inherit from.
    @packageDocumentation
*/
import { Payload, ModifiablePayload } from './payload';
import SubmoduleMap from '../interfaces/submodule-map';
/**
 * @template TResult The return type of the Action.
 */
export default class Action<TResult> {
    protected submodules: SubmoduleMap;
    /**
     * The payload containing the data (endpoint, request type, parameters, etc.) related to the
     * associated Action. The type guards associated with setting certain properties of the payload
     * are checked at runtime and may throw errors when provided invalid values.
     */
    payload: Payload;
    /**
     *
     * @param submodules The reference to the submodules ({@link RiotAPI}, {@link Cache}). Passed into the action.
     */
    constructor(submodules: SubmoduleMap);
    /**
     * Sets multiple values in the Action payload simultaneously.
     *
     * @param payload The payload with which the Action's payload is overwritten
     * @returns The current Action (with the updated payload state).
     */
    set(payload: ModifiablePayload): this;
    /**
     * Executes the action, sending an HTTP request to the Riot API servers
     * and retrieving the associated data from the appropriate endpoint.
     * @throws Will throw an error if a required payload value (*region*,
     * *body* on POST or PUT requests, etc.) is missing or the HTTP request
     * fails with an error.
     */
    exec(): Promise<TResult>;
    protected inferEndpoint(): void;
    /**
     * Returns the **encoded** target URL for the action without executing an HTTP request.
     * Useful if the URL string is needed for custom actions outside the scope of the library.
     * @throws Will throw an error if a required payload value (*region*,
     * *body* on POST or PUT requests, etc.) is missing.
     */
    URL(): string;
}
//# sourceMappingURL=action.d.ts.map