import { Logger } from '@moojo/logger'; import { Clock } from '@moojo/misc-clock'; import { ContractClient } from '@moojo/protocol-contract-client'; import { AttestationOf, HexString } from '@moojo/protocol-core'; import { AdDefinition } from '@moojo/protocol-core'; import { PrivateKey } from '@moojo/protocol-crypto'; import { SdkOptions, SdkOverrides } from '@moojo/sdk-core'; import { Transfer } from '@moojo/serving-box-client'; import { RateLimiter } from './rate-limiter'; import { RevShareCallback } from './rev-share/rev-share-callback'; export type MoojoAdsSdkOptions = SdkOptions & Partial<{ /** * Custom prefix for rev share rate limiter keys. When multiple SDK instances are created, * using different prefixes ensures each instance has its own independent rate limiting. */ revShareRateLimiterKeyPrefix: string; /** * Callback function to handle revenue sharing events. */ revShareCallback: RevShareCallback; }>; export declare class MoojoAdsSdk { private readonly logger; private readonly attestationReader; private readonly campaignReader; private readonly adMatcher; constructor(logger: Logger, clock: Clock, sdkInstanceId: string, sdkVersion: string, key: PrivateKey, dAppAddress: HexString, openLayerClient: ContractClient, secretLayerClient: ContractClient, endpoints: { userDataNode: string | Transfer; adsRelayer: string | Transfer; }, openLayerContracts: { credentialRegistry: HexString; campaignRegistry: HexString; }, secretLayerContracts: { revShare: HexString; protocolForwarder: HexString; }, rateLimiter: RateLimiter, rateLimiterKeyPrefix: string | undefined, revShareCallback: RevShareCallback | undefined); static init(key: HexString | PrivateKey, dAppAddress: HexString, options: MoojoAdsSdkOptions, overrides?: SdkOverrides): Promise; listCredentials(): Promise[]>; listAds(): Promise; }