import { ethers } from 'ethers';
import { CeramicClient } from '@ceramicnetwork/http-client';
import { DIDDataStore } from '@glazed/did-datastore';
import { W3CCredential } from '@krebitdao/eip712-vc';
import { ClaimProps } from '../utils/index.js';
import { IConfigProps } from '../config/index.js';
interface IProps extends IConfigProps {
    wallet: ethers.Signer;
    ethProvider: ethers.providers.Provider | ethers.providers.ExternalProvider;
    address: string;
}
interface IssuerProps {
    first?: number;
    type: string;
}
interface StampsProps {
    first?: number;
    type?: string;
    claimId?: string;
}
interface EncryptedProps {
    encryptedSymmetricKey: string;
    encryptedString?: string;
    accessControlConditions?: any[];
    unifiedAccessControlConditions?: string;
}
export declare class Krebit {
    ceramic: CeramicClient;
    idx: DIDDataStore;
    address: string;
    did: string;
    krbContract: any;
    nftContract: any;
    wallet: ethers.Signer;
    ethProvider: ethers.providers.Provider | ethers.providers.ExternalProvider;
    private currentConfig;
    private biconomy;
    constructor(props?: IProps);
    connect: (currentSession?: string, defaultChainId?: string) => Promise<string>;
    isConnected: () => Promise<boolean>;
    setTypeSchema: (type: string, schema: any) => Promise<string>;
    getTypeSchema: (type?: string, did?: string) => Promise<ModelTypeAliases>;
    getCredential: (vcId: string) => Promise<W3CCredential>;
    checkCredential: (w3cCredential: W3CCredential) => boolean;
    validCredentialSignature: (w3cCredential: W3CCredential) => boolean;
    isCredentialExpired: (w3cCredential: W3CCredential) => boolean;
    getEncryptedCredentialConditions: (vcId: string) => Promise<any>;
    shareEncryptedCredentialWith: (vcId: string, newAccessControlConditions: any[], permanent?: boolean) => Promise<void>;
    removeAllEncryptedCredentialShares: (vcId: string) => Promise<void>;
    decryptCredential: (w3cCredential: W3CCredential) => any;
    encryptClaimValue: (value: any, ethereumAddress: string) => Promise<{
        unifiedAccessControlConditions: string;
        encryptedString: string;
        encryptedSymmetricKey: any;
        chain: "mumbai" | "polygon" | "goerli" | "mainnet";
    }>;
    decryptClaimValue: (encryptedClaimValue: EncryptedProps) => Promise<any>;
    getClaimValue: (w3cCredential: W3CCredential) => any;
    compareClaimValueHash: (claimValue: any, w3cCredential: W3CCredential) => boolean;
    getIssuers: (props: IssuerProps) => Promise<any>;
    issue: (claim: ClaimProps) => Promise<{
        proof: import("@krebitdao/eip712-vc").Proof;
        '@context': string[];
        type: string[];
        id: string;
        issuer: {
            id: string;
            ethereumAddress: string;
        };
        credentialSubject: {
            id: string;
            trust: number;
            stake: number;
            price: number;
            nbf: number;
            exp: number;
            value: any;
            type: string;
            typeSchema: string;
            ethereumAddress: string;
            did: string;
            expirationDate: string;
            tags?: string[];
            encrypt?: "hash" | "lit" | "plain";
            shareEncryptedWith?: string;
        };
        credentialSchema: {
            id: string;
            type: string;
        };
        issuanceDate: string;
        expirationDate: string;
    }>;
    stampCredential: (w3cCredential: W3CCredential) => Promise<any>;
    mintCredentialNFT: (w3cCredential: W3CCredential) => Promise<any>;
    stamp: (w3cCredential: W3CCredential) => Promise<any>;
    mintNFT: (w3cCredential: W3CCredential) => Promise<any>;
    isMinted: (w3cCredential: W3CCredential) => Promise<any>;
    nftBalance: (credentialType: string) => Promise<any>;
    stampCost: (w3cCredential: W3CCredential) => Promise<{
        estimatedFee: string;
        totalCost: string;
    }>;
    getStamps: (props: StampsProps) => Promise<any>;
    checkStamp: (stamp: any) => Promise<any>;
    revokeStamp: (stamp: any, reason: string) => Promise<any>;
    suspendStamp: (stamp: any, reason: string) => Promise<any>;
    expireStamp: (stamp: any) => Promise<any>;
    removeStamp: (stamp: any, reason: string) => Promise<any>;
    createDocument: (content: any, tags: string[], schema: string, family?: string) => Promise<string>;
    getDocument: (streamId: string) => Promise<unknown>;
    updateDocument: (content: any, streamId: string) => Promise<void>;
}
export {};
//# sourceMappingURL=Krebit.d.ts.map