import { auth as crtAuth } from "@aws-sdk/crt-loader";
import { AwsCredentialIdentity } from "@aws-sdk/types";
import { SignatureV4CryptoInit, SignatureV4Init } from "@smithy/signature-v4";
import {
  HttpRequest,
  RequestPresigner,
  RequestPresigningArguments,
  RequestSigner,
  RequestSigningArguments,
} from "@smithy/types";
export type AwsSigningAlgorithm = crtAuth.AwsSigningAlgorithm;
export interface CrtSignerV4Init extends SignatureV4Init {
  signingAlgorithm?: AwsSigningAlgorithm;
}
export declare class CrtSignerV4 implements RequestPresigner, RequestSigner {
  private readonly service;
  private readonly regionProvider;
  private readonly credentialProvider;
  private readonly sha256;
  private readonly uriEscapePath;
  private readonly applyChecksum;
  private readonly signingAlgorithm;
  constructor({
    credentials,
    region,
    service,
    sha256,
    applyChecksum,
    uriEscapePath,
    signingAlgorithm,
  }: CrtSignerV4Init & SignatureV4CryptoInit);
  private options2crtConfigure;
  presign(
    originalRequest: HttpRequest,
    options?: RequestPresigningArguments
  ): Promise<HttpRequest>;
  sign(
    toSign: HttpRequest,
    options?: RequestSigningArguments
  ): Promise<HttpRequest>;
  signWithCredentials(
    toSign: HttpRequest,
    credentials: AwsCredentialIdentity,
    options?: RequestSigningArguments
  ): Promise<HttpRequest>;
  private getQueryParam;
  private signRequest;
  verifySigv4aSigning(
    request: HttpRequest,
    signature: string,
    expectedCanonicalRequest: string,
    eccPubKeyX: string,
    eccPubKeyY: string,
    options?: RequestSigningArguments
  ): Promise<boolean>;
  verifySigv4aPreSigning(
    request: HttpRequest,
    signature: string | Array<string> | null,
    expectedCanonicalRequest: string,
    eccPubKeyX: string,
    eccPubKeyY: string,
    options?: RequestPresigningArguments
  ): Promise<boolean>;
}
