import { UrlTemplate } from "./urlTemplate";
/**
 * Metadata that indicates a contract implemented by a service.
 * @hidden
 */
export declare class ContractAnnotation {
    name: string;
    /**
     * Constructs a contract annotation.
     * @param name The name of the contract.
     */
    constructor(name?: string);
}
/**
 * Options available for [[Operation]] decorator.
 */
export interface OperationOptions {
    /**
     * The name of the operation. If not specified, defaults to the name of the method.
     */
    name?: string;
    /**
     * Indicates if the operation is one way. Default is false. One-way operations immediately return to the client
     * without waiting for a result.
     */
    isOneWay?: boolean;
    /**
     * Specifies the timeout for the operation. If not specified, defaults to the timeout for the service.
     */
    timeout?: number;
    /**
     * Indicates the name of the target contract for this operation. This is required when the service has more than
     * one contract.
     */
    contract?: string;
}
/**
 * Metadata that describes a method on a service as part of a service contract.
 * @hidden
 */
export declare class OperationAnnotation {
    /**
     * The name of the operation. If not specified, defaults to the name of the method.
     */
    name: string;
    /**
     * Indicates if the operation is one way. Default is false. One-way operations immediately return to the client
     * without waiting for a result.
     */
    isOneWay: boolean;
    /**
     * Specifies the timeout for the operation. If not specified, defaults to the timeout for the service.
     */
    timeout: number;
    /**
     * Indicates the name of the target contract for this operation. This is required when the service has more than
     * one contract.
     */
    contract: string;
    constructor(args: OperationOptions);
}
/**
 * Options for indicating that an operation is callable via a REST api.
 */
export declare class WebInvokeOptions {
    /**
     * The http method (e.g. GET, POST, PUT, ...)
     */
    method: string;
    /**
     * The URL template for the operation. For more information, see [[UrlTemplate]].
     */
    template: string;
}
/**
 * Metadata that indicates an operation is callable via a REST api.
 * @hidden
 */
export declare class WebInvokeAnnotation {
    method: string;
    template: UrlTemplate;
    /**
     * Constructs a WebInvokeAnnotation.
     * @param options Options for operation that is callable ia a REST api.
     */
    constructor(options: WebInvokeOptions);
}
/**
 * Metadata that indicates an operation is callable an HTTP GET request.
 * @hidden
 */
export declare class WebGetAnnotation extends WebInvokeAnnotation {
    /**
     * Constructs a WebGetAnnotation.
     * @param template The URL template for the operation. For more information, see [[UrlTemplate]].
     */
    constructor(template: string);
}
/**
 * Metadata that indicates an operation is callable an HTTP PUT request.
 * @hidden
 */
export declare class WebPutAnnotation extends WebInvokeAnnotation {
    /**
     * Constructs a WebPutAnnotation.
     * @param template The URL template for the operation. For more information, see [[UrlTemplate]].
     */
    constructor(template: string);
}
/**
 * Metadata that indicates an operation is callable an HTTP POST request.
 * @hidden
 */
export declare class WebPostAnnotation extends WebInvokeAnnotation {
    /**
     * Constructs a WebPostAnnotation.
     * @param template The URL template for the operation. For more information, see [[UrlTemplate]].
     */
    constructor(template: string);
}
/**
 * Metadata that indicates an operation is callable an HTTP DELETE request.
 * @hidden
 */
export declare class WebDeleteAnnotation extends WebInvokeAnnotation {
    /**
     * Constructs a WebDeleteAnnotation.
     * @param template The URL template for the operation. For more information, see [[UrlTemplate]].
     */
    constructor(template: string);
}
/**
 * Metadata that indicates an operation is callable an HTTP HEAD request.
 * @hidden
 */
export declare class WebHeadAnnotation extends WebInvokeAnnotation {
    /**
     * Constructs a WebHeadAnnotation.
     * @param template The URL template for the operation. For more information, see [[UrlTemplate]].
     */
    constructor(template: string);
}
/**
 * Metadata indicates that the body of the message should be mapped to the operation parameter.
 * @hidden
 */
export declare class InjectBodyAnnotation {
}
