import Joi from 'joi';
export declare class Parameter {
    /** @description The name of the parameter */
    name: string;
    /** @description The value associated with the parameter */
    value: string;
}
export declare const MethodSchema: Joi.StringSchema;
export declare const ParameterSchema: Joi.ObjectSchema<any>;
export declare class DateTimeConfiguration {
    /** @description JSONPath to the JSON element containing the date-time */
    path: string;
    /** @description DateTime format string compliant with
     * https://docs.microsoft.com/en-us/dotnet/standard/base-types/custom-date-and-time-format-strings */
    date_time_format: string;
}
export declare const DateTimeConfigurationSchema: Joi.ObjectSchema<any>;
export type MapOfStrings = {
    [key: string]: string;
};
/** @description Optional configuration to take full control of parsing and extracting fields
 * from the integration's JSON response body.
 * Note for JSONPath: strings not starting with $ are interpreted as string literals
 */
export declare class ResponseTransformationConfiguration {
    /** @description JSONPath to the JSON element for access_token. */
    access_token: string;
    /** @description JSONPath to the JSON element for token_type */
    token_type: string;
    /** @description JSONPath to the JSON element for refresh_token */
    refresh_token?: string;
    /** @description JSONPath to the JSON element for expires_in. Mutually exclusive with expires_at */
    expires_in?: string;
    /** @description Configuration for parsing a date-time, when the integration is lacking expires_in.
     * Mutually exclusive with expires_in.
     */
    expires_at?: DateTimeConfiguration;
    /** @description Optional collection of properties to include in the connection_context sent back with the auth flow result.
     *  Property value may be JSONPath or a string literal.
     *  E.g.
     *  "connection_context": {
     *    "account_number": "$.data.account_number"
     *  }
     */
    connection_context?: MapOfStrings;
}
export declare const MapOfStringsSchema: Joi.ObjectSchema<any>;
export declare const ResponseTransformationConfigurationSchema: Joi.ObjectSchema<any>;
export declare class AccessToken {
    /** @description OAuth1 only. The url to obtain the temporary Access (aka Request) Token to start a flow **/
    url_template: string;
}
export declare const AccessTokenSchema: Joi.ObjectSchema<any>;
export declare class RequestTokenConfiguration {
    /** @description The url to obtain the access token using the authorization code on the backend @example "http://{auth_state:store_name}.store.com/admin/oauth/request", "http://store.com/oauth/request" */
    url_template: string;
    /** @description A list of query parameters that will be attached to the url */
    query_parameters?: Parameter[];
    /** @description Method to use when making the server-server code for token request @example "GET", "POST" */
    method?: string;
    /** @description List of parameters that are sent to the integration when exchanging the code for the token. These are built using ContentType */
    body?: Parameter[];
    /** @description List of headers that are sent to the integration when requesting a token */
    headers?: Parameter[];
    /** @description Response payload parsing */
    response?: ResponseTransformationConfiguration;
}
export declare const RequestTokenConfigurationSchema: Joi.ObjectSchema<any>;
export declare class RefreshTokenConfiguration {
    /** @description The url to refresh the access token using the authorization code on the backend @example "http://{auth_state:store_name}.store.com/admin/oauth/refresh", "http://store.com/oauth/refresh" */
    url_template: string;
    /** @description A list of query parameters that will be attached to the url */
    query_parameters?: Parameter[];
    /** @description Method to use when making the server-server code for token request @example "GET", "POST" */
    method?: string;
    /** @description List of parameters that are sent to the integration during the server-server refresh token request. These are built using the content type specified in the headers array. */
    body?: Parameter[];
    /** @description List of headers that are sent to the integration when refreshing a token */
    headers?: Parameter[];
    /** @description Response payload parsing */
    response?: ResponseTransformationConfiguration;
}
export declare const RefreshTokenConfigurationSchema: Joi.ObjectSchema<any>;
export declare class NonceConfiguration {
    name: string;
}
export declare const NonceConfigurationSchema: Joi.ObjectSchema<any>;
export declare class AuthorizationConfiguration {
    /** @description The url to obtain the access token using the authorization code on the backend @example "http://{auth_state:store_name}.store.com/admin/oauth/authorize", "http://store.com/oauth/authorize" */
    url_template: string;
    /** @description A list of query parameters that will be attached to the url */
    query_parameters?: Parameter[];
    /** @description Method to use when making the server-server code for token request @example "GET", "POST" */
    method?: string;
    /** @description List of parameters that are sent to the integration during the server-server authorization request. These are built using the content type specified in the headers array. */
    body?: Parameter[];
    /** @description List of headers that are sent to the integration when authorizing a token */
    headers?: Parameter[];
    /** @description A nonce query parameter included on the accept request, then returned and validated on the redirect request */
    nonce?: NonceConfiguration;
}
export declare const AuthorizationConfigurationSchema: Joi.ObjectSchema<any>;
