export interface AnyCtor { new (...args: Array): T; prototype: {}; } export interface IdentityBill { grants: ReadonlyArray; isIdentified: boolean; isAnonymous: boolean; } export declare abstract class IdentifiedBillBase { readonly grants: ReadonlyArray; constructor(grants: ReadonlyArray); readonly isIdentified: true; readonly isAnonymous: false; } export declare class IdentifiedBill extends IdentifiedBillBase { readonly principal: TPrincipal; readonly credential: TCredential; constructor(principal: TPrincipal, credential: TCredential, grants: ReadonlyArray); } export declare class AnonymousBill implements IdentityBill { readonly grants: ReadonlyArray; constructor(grants: ReadonlyArray); readonly isIdentified: false; readonly isAnonymous: true; }