import * as t from 'io-ts';
export interface AddressBrand {
    readonly Address: unique symbol;
}
export declare const Address: t.Type<`0x${string}` & AddressBrand, `0x${string}`, unknown>;
export type Address = t.TypeOf<typeof Address>;
export declare const IdTokenC: t.ExactC<t.TypeC<{
    eoa: t.Type<`0x${string}` & AddressBrand, `0x${string}`, unknown>;
    sub: t.StringC;
    custodian: t.UnionC<[t.LiteralC<"fv">, t.LiteralC<"self">]>;
    chainId: t.NumberC;
    futurepass: t.Type<`0x${string}` & AddressBrand, `0x${string}`, unknown>;
    nonce: t.UnionC<[t.StringC, t.UndefinedC, t.NullC]>;
    s_hash: t.UnionC<[t.StringC, t.UndefinedC, t.NullC]>;
    at_hash: t.UnionC<[t.StringC, t.UndefinedC, t.NullC]>;
    aud: t.StringC;
    exp: t.NumberC;
    iat: t.NumberC;
    iss: t.StringC;
}>>;
export declare const TokenEndpointResponseC: t.ExactC<t.TypeC<{
    access_token: t.StringC;
    expires_in: t.NumberC;
    id_token: t.StringC;
    scope: t.StringC;
    token_type: t.StringC;
}>>;
export declare const getUserFromToken: (idToken: string) => {
    eoa: `0x${string}` & AddressBrand;
    sub: string;
    custodian: "fv" | "self";
    chainId: number;
    futurepass: `0x${string}` & AddressBrand;
    nonce: string | null | undefined;
    s_hash: string | null | undefined;
    at_hash: string | null | undefined;
    aud: string;
    exp: number;
    iat: number;
    iss: string;
} | undefined;
