import { providers } from 'ethers';
import { SiweMessage } from './client';
export interface VerifyParams {
    /** Signature of the message signed by the wallet */
    signature: string;
    /** RFC 3986 URI scheme for the authority that is requesting the signing. */
    scheme?: string;
    /** RFC 4501 dns authority that is requesting the signing. */
    domain?: string;
    /** Randomized token used to prevent replay attacks, at least 8 alphanumeric characters. */
    nonce?: string;
    /**ISO 8601 datetime string of the current time. */
    time?: string;
}
export declare const VerifyParamsKeys: Array<keyof VerifyParams>;
export interface VerifyOpts {
    /** ethers provider to be used for EIP-1271 validation */
    provider?: providers.Provider;
    /** If the library should reject promises on errors, defaults to false */
    suppressExceptions?: boolean;
    /** Enables a custom verification function that will be ran alongside EIP-1271 check. */
    verificationFallback?: (params: VerifyParams, opts: VerifyOpts, message: SiweMessage, EIP1271Promise: Promise<SiweResponse>) => Promise<SiweResponse>;
}
export declare const VerifyOptsKeys: Array<keyof VerifyOpts>;
/**
 * Returned on verifications.
 */
export interface SiweResponse {
    /** Boolean representing if the message was verified with success. */
    success: boolean;
    /** If present `success` MUST be false and will provide extra information on the failure reason. */
    error?: SiweError;
    /** Original message that was verified. */
    data: SiweMessage;
}
/**
 * Interface used to return errors in SiweResponses.
 */
export declare class SiweError {
    constructor(type: SiweErrorType | string, expected?: string, received?: string);
    /** Type of the error. */
    type: SiweErrorType | string;
    /** Expected value or condition to pass. */
    expected?: string;
    /** Received value that caused the failure. */
    received?: string;
}
/**
 * Possible message error types.
 */
export declare enum SiweErrorType {
    /** `expirationTime` is present and in the past. */
    EXPIRED_MESSAGE = "Expired message.",
    /** `domain` is not a valid authority or is empty. */
    INVALID_DOMAIN = "Invalid domain.",
    /** `scheme` don't match the scheme provided for verification. */
    SCHEME_MISMATCH = "Scheme does not match provided scheme for verification.",
    /** `domain` don't match the domain provided for verification. */
    DOMAIN_MISMATCH = "Domain does not match provided domain for verification.",
    /** `nonce` don't match the nonce provided for verification. */
    NONCE_MISMATCH = "Nonce does not match provided nonce for verification.",
    /** `address` does not conform to EIP-55 or is not a valid address. */
    INVALID_ADDRESS = "Invalid address.",
    /** `uri` does not conform to RFC 3986. */
    INVALID_URI = "URI does not conform to RFC 3986.",
    /** `nonce` is smaller then 8 characters or is not alphanumeric */
    INVALID_NONCE = "Nonce size smaller then 8 characters or is not alphanumeric.",
    /** `notBefore` is present and in the future. */
    NOT_YET_VALID_MESSAGE = "Message is not valid yet.",
    /** Signature doesn't match the address of the message. */
    INVALID_SIGNATURE = "Signature does not match address of the message.",
    /** `expirationTime`, `notBefore` or `issuedAt` not compliant to ISO-8601. */
    INVALID_TIME_FORMAT = "Invalid time format.",
    /** `version` is not 1. */
    INVALID_MESSAGE_VERSION = "Invalid message version.",
    /** Thrown when some required field is missing. */
    UNABLE_TO_PARSE = "Unable to parse the message."
}
