import { z } from 'zod'; import { WalletClient, Transport, Chain, Account, PublicActions } from 'viem'; interface Logger { isDebugEnabled(): boolean; debug(message: string, ...args: unknown[]): void; isInfoEnabled(): boolean; info(message: string, ...args: unknown[]): void; isWarnEnabled(): boolean; warn(message: string, ...args: unknown[]): void; isErrorEnabled(): boolean; error(message: string, ...args: unknown[]): void; child(tag: string): Logger; } type DurationUnit = 'millis' | 'seconds' | 'minutes' | 'hours' | 'days'; /** * An immutable length of time, in milliseconds granularity */ declare class Duration { private readonly amountMillis; constructor(amountMillis: number); private exactUnrounded; exact(targetUnit: DurationUnit, precision?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10): number; private abs; whole(targetUnit: DurationUnit): number; private sign; toString(): string; isZero(): boolean; isNegative(): boolean; negate(): Duration; format(): string; plus(rhs: Duration): Duration; minus(rhs: Duration): Duration; compare(that: Duration): -1 | 0 | 1; is(operator: '<' | '<=' | '==' | '>=' | '>', other: Duration): boolean; } /** * An immutable point in time, in milliseconds granularity. */ declare class Instant { /** * @returns the instant representing 1970-01-01T00:00:00Z */ static get epoch(): Instant; /** * Number of milliseconds since 1-1-1970 (UTC). */ readonly millis: number; constructor(date: Date); constructor(millisSince1970: number); static fromMillis(millisSince1970: number): Instant; static fromIsoString(iso8601Timestamp: string): Instant; static fromDate(date: Date): Instant; /** * @returns a Date object matching the instant. */ get date(): Date; /** * @returns a duration from epoch to this instant */ get duration(): Duration; /** * @returns Number of seconds since 1-1-1970 (UTC). */ get seconds(): number; /** * @returns the ISO-8601 representation of the instant. */ format(): string; toJSON(): number; toString(): string; static zod: (units?: "millis" | "seconds") => z.ZodUnion<[z.ZodType, z.ZodEffects, z.ZodEffects, z.ZodEffects, Instant, { millis: number; }>]>; is(operator: '<' | '<=' | '==' | '>=' | '>', other: Instant): boolean; compare(other: Instant): -1 | 0 | 1; /** * Adds a duration to this instant * @param the duration to add * @returns A new Instant object */ shiftBy(duration: Duration): Instant; shiftBy(amount: number, unit: DurationUnit): Instant; /** * Computes the difference between `this` and `rhs` * @param rhs the Insant to subtract * @returns The duration between `rhs` and `this` */ minus(rhs: Instant): Duration; static max(first: Instant, ...others: Instant[]): Instant; static min(first: Instant, ...others: Instant[]): Instant; } interface Clock { now(): Instant; } declare const AdDefinition: z.ZodEffects; img: z.ZodOptional; h: z.ZodOptional; }, "strip", z.ZodTypeAny, { url: string; w?: number | undefined; h?: number | undefined; }, { url: string; w?: number | undefined; h?: number | undefined; }>>; title: z.ZodOptional>; }, "strip", z.ZodTypeAny, { id: number; img?: { url: string; w?: number | undefined; h?: number | undefined; } | undefined; title?: { text: string; } | undefined; required?: number | undefined; }, { id: number; img?: { url: string; w?: number | undefined; h?: number | undefined; } | undefined; title?: { text: string; } | undefined; required?: number | undefined; }>, { id: number; img?: { url: string; w?: number | undefined; h?: number | undefined; } | undefined; title?: { text: string; } | undefined; required?: number | undefined; }, { id: number; img?: { url: string; w?: number | undefined; h?: number | undefined; } | undefined; title?: { text: string; } | undefined; required?: number | undefined; }>, "many">; link: z.ZodObject<{ url: z.ZodString; clicktrackers: z.ZodOptional>; }, "strip", z.ZodTypeAny, { url: string; clicktrackers?: string[] | undefined; }, { url: string; clicktrackers?: string[] | undefined; }>; ver: z.ZodOptional; eventtrackers: z.ZodOptional; }, "strip", z.ZodTypeAny, { event: number; method: number; url?: string | undefined; }, { event: number; method: number; url?: string | undefined; }>, "many">>; privacy: z.ZodOptional; }, "strip", z.ZodTypeAny, { assets: { id: number; img?: { url: string; w?: number | undefined; h?: number | undefined; } | undefined; title?: { text: string; } | undefined; required?: number | undefined; }[]; link: { url: string; clicktrackers?: string[] | undefined; }; ver?: string | undefined; eventtrackers?: { event: number; method: number; url?: string | undefined; }[] | undefined; privacy?: string | undefined; }, { assets: { id: number; img?: { url: string; w?: number | undefined; h?: number | undefined; } | undefined; title?: { text: string; } | undefined; required?: number | undefined; }[]; link: { url: string; clicktrackers?: string[] | undefined; }; ver?: string | undefined; eventtrackers?: { event: number; method: number; url?: string | undefined; }[] | undefined; privacy?: string | undefined; }>>; fixedSize: z.ZodOptional>; flexibleSize: z.ZodOptional>; newMedia: z.ZodOptional>; }, "strip", z.ZodTypeAny, { native?: { assets: { id: number; img?: { url: string; w?: number | undefined; h?: number | undefined; } | undefined; title?: { text: string; } | undefined; required?: number | undefined; }[]; link: { url: string; clicktrackers?: string[] | undefined; }; ver?: string | undefined; eventtrackers?: { event: number; method: number; url?: string | undefined; }[] | undefined; privacy?: string | undefined; } | undefined; fixedSize?: {} | undefined; flexibleSize?: {} | undefined; newMedia?: {} | undefined; }, { native?: { assets: { id: number; img?: { url: string; w?: number | undefined; h?: number | undefined; } | undefined; title?: { text: string; } | undefined; required?: number | undefined; }[]; link: { url: string; clicktrackers?: string[] | undefined; }; ver?: string | undefined; eventtrackers?: { event: number; method: number; url?: string | undefined; }[] | undefined; privacy?: string | undefined; } | undefined; fixedSize?: {} | undefined; flexibleSize?: {} | undefined; newMedia?: {} | undefined; }>, { native?: { assets: { id: number; img?: { url: string; w?: number | undefined; h?: number | undefined; } | undefined; title?: { text: string; } | undefined; required?: number | undefined; }[]; link: { url: string; clicktrackers?: string[] | undefined; }; ver?: string | undefined; eventtrackers?: { event: number; method: number; url?: string | undefined; }[] | undefined; privacy?: string | undefined; } | undefined; fixedSize?: {} | undefined; flexibleSize?: {} | undefined; newMedia?: {} | undefined; }, { native?: { assets: { id: number; img?: { url: string; w?: number | undefined; h?: number | undefined; } | undefined; title?: { text: string; } | undefined; required?: number | undefined; }[]; link: { url: string; clicktrackers?: string[] | undefined; }; ver?: string | undefined; eventtrackers?: { event: number; method: number; url?: string | undefined; }[] | undefined; privacy?: string | undefined; } | undefined; fixedSize?: {} | undefined; flexibleSize?: {} | undefined; newMedia?: {} | undefined; }>; type AdDefinition = z.infer; declare const AdSet: z.ZodObject<{ /** * Unique id of the ad-set. Unset if the ad-set has not been stored. */ id: z.ZodOptional>; /** * Names this ad set. If there are two ad sets with the same name inside a Campaign the first one is ignored * ("last wins"). */ name: z.ZodString; /** * Whether this ad-set is allowed to be served to users. */ active: z.ZodDefault; /** * A list of credential slugs. All must be possessed by the consumer in order to receive this ad set. In the future. * Will be evolved in the future to support richer conditions (in particular: "or semantics"). */ audience: z.ZodArray; }, "strip", z.ZodTypeAny, { slug: string; ownerAddress: `0x${string}`; }, { slug: string; ownerAddress: `0x${string}`; }>, "many">; /** * Timing settings of the ad-set. */ schedule: z.ZodObject<{ from: z.ZodNumber; to: z.ZodOptional; }, "strip", z.ZodTypeAny, { from: number; to?: number | undefined; }, { from: number; to?: number | undefined; }>; /** * List of ads. */ ads: z.ZodArray; img: z.ZodOptional; h: z.ZodOptional; }, "strip", z.ZodTypeAny, { url: string; w?: number | undefined; h?: number | undefined; }, { url: string; w?: number | undefined; h?: number | undefined; }>>; title: z.ZodOptional>; }, "strip", z.ZodTypeAny, { id: number; img?: { url: string; w?: number | undefined; h?: number | undefined; } | undefined; title?: { text: string; } | undefined; required?: number | undefined; }, { id: number; img?: { url: string; w?: number | undefined; h?: number | undefined; } | undefined; title?: { text: string; } | undefined; required?: number | undefined; }>, { id: number; img?: { url: string; w?: number | undefined; h?: number | undefined; } | undefined; title?: { text: string; } | undefined; required?: number | undefined; }, { id: number; img?: { url: string; w?: number | undefined; h?: number | undefined; } | undefined; title?: { text: string; } | undefined; required?: number | undefined; }>, "many">; link: z.ZodObject<{ url: z.ZodString; clicktrackers: z.ZodOptional>; }, "strip", z.ZodTypeAny, { url: string; clicktrackers?: string[] | undefined; }, { url: string; clicktrackers?: string[] | undefined; }>; ver: z.ZodOptional; eventtrackers: z.ZodOptional; }, "strip", z.ZodTypeAny, { event: number; method: number; url?: string | undefined; }, { event: number; method: number; url?: string | undefined; }>, "many">>; privacy: z.ZodOptional; }, "strip", z.ZodTypeAny, { assets: { id: number; img?: { url: string; w?: number | undefined; h?: number | undefined; } | undefined; title?: { text: string; } | undefined; required?: number | undefined; }[]; link: { url: string; clicktrackers?: string[] | undefined; }; ver?: string | undefined; eventtrackers?: { event: number; method: number; url?: string | undefined; }[] | undefined; privacy?: string | undefined; }, { assets: { id: number; img?: { url: string; w?: number | undefined; h?: number | undefined; } | undefined; title?: { text: string; } | undefined; required?: number | undefined; }[]; link: { url: string; clicktrackers?: string[] | undefined; }; ver?: string | undefined; eventtrackers?: { event: number; method: number; url?: string | undefined; }[] | undefined; privacy?: string | undefined; }>>; fixedSize: z.ZodOptional>; flexibleSize: z.ZodOptional>; newMedia: z.ZodOptional>; }, "strip", z.ZodTypeAny, { native?: { assets: { id: number; img?: { url: string; w?: number | undefined; h?: number | undefined; } | undefined; title?: { text: string; } | undefined; required?: number | undefined; }[]; link: { url: string; clicktrackers?: string[] | undefined; }; ver?: string | undefined; eventtrackers?: { event: number; method: number; url?: string | undefined; }[] | undefined; privacy?: string | undefined; } | undefined; fixedSize?: {} | undefined; flexibleSize?: {} | undefined; newMedia?: {} | undefined; }, { native?: { assets: { id: number; img?: { url: string; w?: number | undefined; h?: number | undefined; } | undefined; title?: { text: string; } | undefined; required?: number | undefined; }[]; link: { url: string; clicktrackers?: string[] | undefined; }; ver?: string | undefined; eventtrackers?: { event: number; method: number; url?: string | undefined; }[] | undefined; privacy?: string | undefined; } | undefined; fixedSize?: {} | undefined; flexibleSize?: {} | undefined; newMedia?: {} | undefined; }>, { native?: { assets: { id: number; img?: { url: string; w?: number | undefined; h?: number | undefined; } | undefined; title?: { text: string; } | undefined; required?: number | undefined; }[]; link: { url: string; clicktrackers?: string[] | undefined; }; ver?: string | undefined; eventtrackers?: { event: number; method: number; url?: string | undefined; }[] | undefined; privacy?: string | undefined; } | undefined; fixedSize?: {} | undefined; flexibleSize?: {} | undefined; newMedia?: {} | undefined; }, { native?: { assets: { id: number; img?: { url: string; w?: number | undefined; h?: number | undefined; } | undefined; title?: { text: string; } | undefined; required?: number | undefined; }[]; link: { url: string; clicktrackers?: string[] | undefined; }; ver?: string | undefined; eventtrackers?: { event: number; method: number; url?: string | undefined; }[] | undefined; privacy?: string | undefined; } | undefined; fixedSize?: {} | undefined; flexibleSize?: {} | undefined; newMedia?: {} | undefined; }>, "many">; }, "strip", z.ZodTypeAny, { name: string; active: boolean; audience: { slug: string; ownerAddress: `0x${string}`; }[]; schedule: { from: number; to?: number | undefined; }; ads: { native?: { assets: { id: number; img?: { url: string; w?: number | undefined; h?: number | undefined; } | undefined; title?: { text: string; } | undefined; required?: number | undefined; }[]; link: { url: string; clicktrackers?: string[] | undefined; }; ver?: string | undefined; eventtrackers?: { event: number; method: number; url?: string | undefined; }[] | undefined; privacy?: string | undefined; } | undefined; fixedSize?: {} | undefined; flexibleSize?: {} | undefined; newMedia?: {} | undefined; }[]; id?: `0x${string}` | undefined; }, { name: string; audience: { slug: string; ownerAddress: `0x${string}`; }[]; schedule: { from: number; to?: number | undefined; }; ads: { native?: { assets: { id: number; img?: { url: string; w?: number | undefined; h?: number | undefined; } | undefined; title?: { text: string; } | undefined; required?: number | undefined; }[]; link: { url: string; clicktrackers?: string[] | undefined; }; ver?: string | undefined; eventtrackers?: { event: number; method: number; url?: string | undefined; }[] | undefined; privacy?: string | undefined; } | undefined; fixedSize?: {} | undefined; flexibleSize?: {} | undefined; newMedia?: {} | undefined; }[]; id?: `0x${string}` | undefined; active?: boolean | undefined; }>; type AdSet = z.infer; declare const AssetDefinition: z.ZodEffects; img: z.ZodOptional; h: z.ZodOptional; }, "strip", z.ZodTypeAny, { url: string; w?: number | undefined; h?: number | undefined; }, { url: string; w?: number | undefined; h?: number | undefined; }>>; title: z.ZodOptional>; }, "strip", z.ZodTypeAny, { id: number; img?: { url: string; w?: number | undefined; h?: number | undefined; } | undefined; title?: { text: string; } | undefined; required?: number | undefined; }, { id: number; img?: { url: string; w?: number | undefined; h?: number | undefined; } | undefined; title?: { text: string; } | undefined; required?: number | undefined; }>, { id: number; img?: { url: string; w?: number | undefined; h?: number | undefined; } | undefined; title?: { text: string; } | undefined; required?: number | undefined; }, { id: number; img?: { url: string; w?: number | undefined; h?: number | undefined; } | undefined; title?: { text: string; } | undefined; required?: number | undefined; }>; type AssetDefinition = z.infer; /** * Represents the claimable data in an attestation. * * The claimable is the core information being verified or asserted about a user. * It can range from simple statements to complex, structured data, For example - credentials, identity information, * ownership and more. */ declare const Claimable: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{ type: z.ZodLiteral<"cred">; slug: z.ZodString; }, "strip", z.ZodTypeAny, { type: "cred"; slug: string; }, { type: "cred"; slug: string; }>, z.ZodObject<{ type: z.ZodLiteral<"dummy">; name: z.ZodString; }, "strip", z.ZodTypeAny, { type: "dummy"; name: string; }, { type: "dummy"; name: string; }>]>; type Claimable = z.infer; type ClaimableType = Claimable['type']; /** * Represents an attestation for a user in a web3 environment. * * An attestation is a verifiable claim about a user's attribute or action, * typically recorded on a blockchain for transparency and security. * * inspiration: * https://docs.attest.org/docs/idea--zone/use--case--examples/credentials * https://github.com/ethereum-attestation-service/eas-contracts/blob/master/contracts/IEAS.sol */ declare const Attestation: z.ZodObject<{ /** * The time, in milliseconds since the Unix epoch, at which the credential was issued (issuer time). */ createdAt: z.ZodNumber; /** * The key of the entity issues the credential. */ issuerKey: z.ZodType<`0x${string}`, z.ZodTypeDef, `0x${string}`>; /** * The key of the entity to whom the credential is given. */ recipientKey: z.ZodType<`0x${string}`, z.ZodTypeDef, `0x${string}`>; /** * Signature that ensures the attestation has not been tampered with and can be verified using the issuer's key. */ signature: z.ZodString; /** * EIP-191 signature for on-chain verification on Ethereum-like networks. */ eip191Signature: z.ZodString; /** * The actual claimable information of the credential. */ data: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{ type: z.ZodLiteral<"cred">; slug: z.ZodString; }, "strip", z.ZodTypeAny, { type: "cred"; slug: string; }, { type: "cred"; slug: string; }>, z.ZodObject<{ type: z.ZodLiteral<"dummy">; name: z.ZodString; }, "strip", z.ZodTypeAny, { type: "dummy"; name: string; }, { type: "dummy"; name: string; }>]>; /** * A unique value to prevent replay attacks. */ nonce: z.ZodString; }, "strip", z.ZodTypeAny, { createdAt: number; issuerKey: `0x${string}`; recipientKey: `0x${string}`; signature: string; eip191Signature: string; data: { type: "cred"; slug: string; } | { type: "dummy"; name: string; }; nonce: string; }, { createdAt: number; issuerKey: `0x${string}`; recipientKey: `0x${string}`; signature: string; eip191Signature: string; data: { type: "cred"; slug: string; } | { type: "dummy"; name: string; }; nonce: string; }>; type Attestation = z.infer; type AttestationOf = Omit & { data: Extract; }; declare const Campaign: z.ZodObject<{ /** * Unique id of the ad-set. Unset if the campaign was not yet stored. */ id: z.ZodOptional>; /** * Names this campaign. If there are two campaigns with same name inside a CampaignList the list first one is ignored * ("last wins") * * TODO(roman): ID? globally unique? */ name: z.ZodString; /** * */ adSets: z.ZodArray>; name: z.ZodString; active: z.ZodDefault; audience: z.ZodArray; }, "strip", z.ZodTypeAny, { slug: string; ownerAddress: `0x${string}`; }, { slug: string; ownerAddress: `0x${string}`; }>, "many">; schedule: z.ZodObject<{ from: z.ZodNumber; to: z.ZodOptional; }, "strip", z.ZodTypeAny, { from: number; to?: number | undefined; }, { from: number; to?: number | undefined; }>; ads: z.ZodArray; img: z.ZodOptional; h: z.ZodOptional; }, "strip", z.ZodTypeAny, { url: string; w?: number | undefined; h?: number | undefined; }, { url: string; w?: number | undefined; h?: number | undefined; }>>; title: z.ZodOptional>; }, "strip", z.ZodTypeAny, { id: number; img?: { url: string; w?: number | undefined; h?: number | undefined; } | undefined; title?: { text: string; } | undefined; required?: number | undefined; }, { id: number; img?: { url: string; w?: number | undefined; h?: number | undefined; } | undefined; title?: { text: string; } | undefined; required?: number | undefined; }>, { id: number; img?: { url: string; w?: number | undefined; h?: number | undefined; } | undefined; title?: { text: string; } | undefined; required?: number | undefined; }, { id: number; img?: { url: string; w?: number | undefined; h?: number | undefined; } | undefined; title?: { text: string; } | undefined; required?: number | undefined; }>, "many">; link: z.ZodObject<{ url: z.ZodString; clicktrackers: z.ZodOptional>; }, "strip", z.ZodTypeAny, { url: string; clicktrackers?: string[] | undefined; }, { url: string; clicktrackers?: string[] | undefined; }>; ver: z.ZodOptional; eventtrackers: z.ZodOptional; }, "strip", z.ZodTypeAny, { event: number; method: number; url?: string | undefined; }, { event: number; method: number; url?: string | undefined; }>, "many">>; privacy: z.ZodOptional; }, "strip", z.ZodTypeAny, { assets: { id: number; img?: { url: string; w?: number | undefined; h?: number | undefined; } | undefined; title?: { text: string; } | undefined; required?: number | undefined; }[]; link: { url: string; clicktrackers?: string[] | undefined; }; ver?: string | undefined; eventtrackers?: { event: number; method: number; url?: string | undefined; }[] | undefined; privacy?: string | undefined; }, { assets: { id: number; img?: { url: string; w?: number | undefined; h?: number | undefined; } | undefined; title?: { text: string; } | undefined; required?: number | undefined; }[]; link: { url: string; clicktrackers?: string[] | undefined; }; ver?: string | undefined; eventtrackers?: { event: number; method: number; url?: string | undefined; }[] | undefined; privacy?: string | undefined; }>>; fixedSize: z.ZodOptional>; flexibleSize: z.ZodOptional>; newMedia: z.ZodOptional>; }, "strip", z.ZodTypeAny, { native?: { assets: { id: number; img?: { url: string; w?: number | undefined; h?: number | undefined; } | undefined; title?: { text: string; } | undefined; required?: number | undefined; }[]; link: { url: string; clicktrackers?: string[] | undefined; }; ver?: string | undefined; eventtrackers?: { event: number; method: number; url?: string | undefined; }[] | undefined; privacy?: string | undefined; } | undefined; fixedSize?: {} | undefined; flexibleSize?: {} | undefined; newMedia?: {} | undefined; }, { native?: { assets: { id: number; img?: { url: string; w?: number | undefined; h?: number | undefined; } | undefined; title?: { text: string; } | undefined; required?: number | undefined; }[]; link: { url: string; clicktrackers?: string[] | undefined; }; ver?: string | undefined; eventtrackers?: { event: number; method: number; url?: string | undefined; }[] | undefined; privacy?: string | undefined; } | undefined; fixedSize?: {} | undefined; flexibleSize?: {} | undefined; newMedia?: {} | undefined; }>, { native?: { assets: { id: number; img?: { url: string; w?: number | undefined; h?: number | undefined; } | undefined; title?: { text: string; } | undefined; required?: number | undefined; }[]; link: { url: string; clicktrackers?: string[] | undefined; }; ver?: string | undefined; eventtrackers?: { event: number; method: number; url?: string | undefined; }[] | undefined; privacy?: string | undefined; } | undefined; fixedSize?: {} | undefined; flexibleSize?: {} | undefined; newMedia?: {} | undefined; }, { native?: { assets: { id: number; img?: { url: string; w?: number | undefined; h?: number | undefined; } | undefined; title?: { text: string; } | undefined; required?: number | undefined; }[]; link: { url: string; clicktrackers?: string[] | undefined; }; ver?: string | undefined; eventtrackers?: { event: number; method: number; url?: string | undefined; }[] | undefined; privacy?: string | undefined; } | undefined; fixedSize?: {} | undefined; flexibleSize?: {} | undefined; newMedia?: {} | undefined; }>, "many">; }, "strip", z.ZodTypeAny, { name: string; active: boolean; audience: { slug: string; ownerAddress: `0x${string}`; }[]; schedule: { from: number; to?: number | undefined; }; ads: { native?: { assets: { id: number; img?: { url: string; w?: number | undefined; h?: number | undefined; } | undefined; title?: { text: string; } | undefined; required?: number | undefined; }[]; link: { url: string; clicktrackers?: string[] | undefined; }; ver?: string | undefined; eventtrackers?: { event: number; method: number; url?: string | undefined; }[] | undefined; privacy?: string | undefined; } | undefined; fixedSize?: {} | undefined; flexibleSize?: {} | undefined; newMedia?: {} | undefined; }[]; id?: `0x${string}` | undefined; }, { name: string; audience: { slug: string; ownerAddress: `0x${string}`; }[]; schedule: { from: number; to?: number | undefined; }; ads: { native?: { assets: { id: number; img?: { url: string; w?: number | undefined; h?: number | undefined; } | undefined; title?: { text: string; } | undefined; required?: number | undefined; }[]; link: { url: string; clicktrackers?: string[] | undefined; }; ver?: string | undefined; eventtrackers?: { event: number; method: number; url?: string | undefined; }[] | undefined; privacy?: string | undefined; } | undefined; fixedSize?: {} | undefined; flexibleSize?: {} | undefined; newMedia?: {} | undefined; }[]; id?: `0x${string}` | undefined; active?: boolean | undefined; }>, "many">; }, "strip", z.ZodTypeAny, { name: string; adSets: { name: string; active: boolean; audience: { slug: string; ownerAddress: `0x${string}`; }[]; schedule: { from: number; to?: number | undefined; }; ads: { native?: { assets: { id: number; img?: { url: string; w?: number | undefined; h?: number | undefined; } | undefined; title?: { text: string; } | undefined; required?: number | undefined; }[]; link: { url: string; clicktrackers?: string[] | undefined; }; ver?: string | undefined; eventtrackers?: { event: number; method: number; url?: string | undefined; }[] | undefined; privacy?: string | undefined; } | undefined; fixedSize?: {} | undefined; flexibleSize?: {} | undefined; newMedia?: {} | undefined; }[]; id?: `0x${string}` | undefined; }[]; id?: `0x${string}` | undefined; }, { name: string; adSets: { name: string; audience: { slug: string; ownerAddress: `0x${string}`; }[]; schedule: { from: number; to?: number | undefined; }; ads: { native?: { assets: { id: number; img?: { url: string; w?: number | undefined; h?: number | undefined; } | undefined; title?: { text: string; } | undefined; required?: number | undefined; }[]; link: { url: string; clicktrackers?: string[] | undefined; }; ver?: string | undefined; eventtrackers?: { event: number; method: number; url?: string | undefined; }[] | undefined; privacy?: string | undefined; } | undefined; fixedSize?: {} | undefined; flexibleSize?: {} | undefined; newMedia?: {} | undefined; }[]; id?: `0x${string}` | undefined; active?: boolean | undefined; }[]; id?: `0x${string}` | undefined; }>; type Campaign = z.infer; declare const CredentialDefinition: z.ZodObject<{ slug: z.ZodString; ownerAddress: z.ZodType<`0x${string}`, z.ZodTypeDef, `0x${string}`>; }, "strip", z.ZodTypeAny, { slug: string; ownerAddress: `0x${string}`; }, { slug: string; ownerAddress: `0x${string}`; }>; type CredentialDefinition = z.infer; /** * Represent Id of protocol entity (campaign, ad-set). */ declare const EntityId: z.ZodType<`0x${string}`, z.ZodTypeDef, `0x${string}`>; type EntityId = z.infer; declare const ImageMedia: z.ZodObject<{ url: z.ZodString; w: z.ZodOptional; h: z.ZodOptional; }, "strip", z.ZodTypeAny, { url: string; w?: number | undefined; h?: number | undefined; }, { url: string; w?: number | undefined; h?: number | undefined; }>; type ImageMedia = z.infer; declare const NativeAd: z.ZodObject<{ assets: z.ZodArray; img: z.ZodOptional; h: z.ZodOptional; }, "strip", z.ZodTypeAny, { url: string; w?: number | undefined; h?: number | undefined; }, { url: string; w?: number | undefined; h?: number | undefined; }>>; title: z.ZodOptional>; }, "strip", z.ZodTypeAny, { id: number; img?: { url: string; w?: number | undefined; h?: number | undefined; } | undefined; title?: { text: string; } | undefined; required?: number | undefined; }, { id: number; img?: { url: string; w?: number | undefined; h?: number | undefined; } | undefined; title?: { text: string; } | undefined; required?: number | undefined; }>, { id: number; img?: { url: string; w?: number | undefined; h?: number | undefined; } | undefined; title?: { text: string; } | undefined; required?: number | undefined; }, { id: number; img?: { url: string; w?: number | undefined; h?: number | undefined; } | undefined; title?: { text: string; } | undefined; required?: number | undefined; }>, "many">; link: z.ZodObject<{ url: z.ZodString; clicktrackers: z.ZodOptional>; }, "strip", z.ZodTypeAny, { url: string; clicktrackers?: string[] | undefined; }, { url: string; clicktrackers?: string[] | undefined; }>; ver: z.ZodOptional; eventtrackers: z.ZodOptional; }, "strip", z.ZodTypeAny, { event: number; method: number; url?: string | undefined; }, { event: number; method: number; url?: string | undefined; }>, "many">>; privacy: z.ZodOptional; }, "strip", z.ZodTypeAny, { assets: { id: number; img?: { url: string; w?: number | undefined; h?: number | undefined; } | undefined; title?: { text: string; } | undefined; required?: number | undefined; }[]; link: { url: string; clicktrackers?: string[] | undefined; }; ver?: string | undefined; eventtrackers?: { event: number; method: number; url?: string | undefined; }[] | undefined; privacy?: string | undefined; }, { assets: { id: number; img?: { url: string; w?: number | undefined; h?: number | undefined; } | undefined; title?: { text: string; } | undefined; required?: number | undefined; }[]; link: { url: string; clicktrackers?: string[] | undefined; }; ver?: string | undefined; eventtrackers?: { event: number; method: number; url?: string | undefined; }[] | undefined; privacy?: string | undefined; }>; type NativeAd = z.infer; declare const Schedule: z.ZodObject<{ /** * Represents the time when the schedule should start. Must be a positive integer representing seconds since the Unix epoch. */ from: z.ZodNumber; /** * Represents the time when the schedule should stop. Must be a positive integer representing seconds since the Unix epoch. * If omitted the ad set will run eternally (unless a subsequent update sets it to an explicit value) */ to: z.ZodOptional; }, "strip", z.ZodTypeAny, { from: number; to?: number | undefined; }, { from: number; to?: number | undefined; }>; type Schedule = z.infer; declare const Title: z.ZodObject<{ text: z.ZodString; }, "strip", z.ZodTypeAny, { text: string; }, { text: string; }>; type Title = z.infer; /** * A string with hex encoded value */ declare const HexString: z.ZodType<`0x${string}`, z.ZodTypeDef, `0x${string}`>; type HexString = z.infer; declare const Network: z.ZodUnion<[z.ZodLiteral<"mainnet">, z.ZodLiteral<"testnet">, z.ZodLiteral<"devnet">]>; type Network = z.infer; /** * A string with a value of public key, */ declare const PublicKeyHexString: z.ZodType<`0x${string}`, z.ZodTypeDef, `0x${string}`>; type PublicKeyHexString = z.infer; declare const Contract: z.ZodUnion<[z.ZodLiteral<"protocolForwarder">, z.ZodLiteral<"credentialRegistry">, z.ZodLiteral<"campaignRegistry">, z.ZodLiteral<"adMatcher">, z.ZodLiteral<"revShare">, z.ZodLiteral<"revShareStats">, z.ZodLiteral<"adBudget">]>; type Contract = z.infer; type EthereumProvider = { request(...args: any): Promise; }; type ContractSchema = { chainId: number; urlOrProvider: string | EthereumProvider; addresses: Record; }; type OpenLayerContracts = 'campaignRegistry' | 'credentialRegistry' | 'adBudget' | 'revShareStats'; type SecretLayerContracts = 'protocolForwarder' | 'revShare'; type ServiceName = 'userDataNode' | 'adsRelayer' | 'adsManager' | 'bridge'; /** * An object that can be used to represent binary data. * TODO: move to UInt8Array */ type BytesLike = Buffer; declare class PublicKey { private readonly keyPair; constructor(key: BytesLike); static make(keyHex: string | HexString): PublicKey; encrypt(message: BytesLike, useCompressed?: boolean): Buffer; verifyDigestSignature(digest: BytesLike, signature: BytesLike): boolean; getEthAddress(): HexString; toHexString(compressed?: boolean): PublicKeyHexString; } declare class PrivateKey { private readonly keyPair; constructor(key: BytesLike); static make(keyHex: string | HexString): PrivateKey; createPublic(compressed?: boolean): PublicKey; static fromSeeds(...seeds: string[]): PrivateKey; decrypt(encryptedMessage: Buffer): Buffer; toString(): string; signDigest(digest: BytesLike): Buffer; } type ContractClient = WalletClient & PublicActions & { isCallWithSenderSupported: boolean; }; declare const IncomingPayload: z.ZodObject<{ acceptsFormat: z.ZodDefault, z.ZodLiteral<"envelope">]>>; endpointName: z.ZodString; endpointRequest: z.ZodUnknown; }, "strip", z.ZodTypeAny, { acceptsFormat: "raw" | "envelope"; endpointName: string; endpointRequest?: unknown; }, { endpointName: string; acceptsFormat?: "raw" | "envelope" | undefined; endpointRequest?: unknown; }>; type IncomingPayload = z.infer; type TransferOptions = { /** * When true, executes asynchronously and returns immediately without waiting for the result. * When false, waits for completion and returns the result. * * @default false */ async: boolean; }; interface Transfer { (payload: IncomingPayload, options?: Partial): Promise; } type SdkOverrides = Partial<{ openSchema: Partial>; secretSchema: Partial>; serviceEndpoints: Partial>; }>; declare const errorCodes: readonly ["generic_error", "http_error", "already_exists", "entity_not_found", "invalid_argument", "data_encoding_error", "crypto_error", "signature_verification_failure", "access_denied", "insufficient_funds", "endpoint_call_error", "unknown_call_error", "unknown_revert_error"]; type SdkErrorCode = (typeof errorCodes)[number]; type SdkErrorOptions = string | { message?: string; cause?: unknown; }; declare class SdkError extends Error { readonly errorCode: SdkErrorCode; constructor(errorCode: SdkErrorCode, options?: SdkErrorOptions); toString(): string; } type SdkOptions = { network: Network; debug?: boolean; }; declare const userKeys: { privateKeyForSecret(secret: string): PrivateKey; publicKeyForSecret(secret: string): PublicKey; }; type RateLimiterOptions = { /** * The interval in milliseconds at which the rate limiter performs cleanup of expired entries. Defaults to 10m. */ cleanupInterval: Duration; }; /** * RateLimiter provides a simple way to control operation frequency by enforcing minimum time intervals * between operations of the same category. It's useful for scenarios like throttling API calls, * limiting user actions, or controlling background task frequency. * * Each operation is identified by a category key, and the limiter ensures sufficient time has passed * since the last operation in that category. The class includes automatic cleanup to prevent memory leaks. * * @example * ```typescript * const limiter = new RateLimiter(clock); * * // Limit API calls to once per second * if (limiter.isAllowed('api_calls', 1000)) { * // Make API call * } * ``` */ declare class RateLimiter { private readonly clock; private readonly lastAllowedByCategory; private readonly cleanupInterval; private lastCleanupTimestamp; /** * Creates a new RateLimiter instance. * @param clock - provides time measurements * @param options - Optional configuration */ constructor(clock: Clock, options?: Partial); /** * Checks if some arbitrary operation is allowed based on the specified minimum interval. * @param categoryKey - An identifier of the category to which the operation "belongs" * @param minInterval - The minimum time interval required to elapse between operations (of the same category) * @returns true if the operation is allowed, false otherwise */ isAllowed(categoryKey: string, minInterval: Duration): boolean; /** * Returns the current number of categories tracked by the rate limiter. Useful for mostly for testing/debugging * purposes. */ countEntries(): number; private cleanup; } interface RevShareCallback { (submittedClaims: number, error?: unknown): void; } 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; }>; 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; } export { AdDefinition, AdSet, AssetDefinition, Attestation, type AttestationOf, Campaign, Claimable, CredentialDefinition, EntityId, ImageMedia, MoojoAdsSdk, type MoojoAdsSdkOptions, NativeAd, PrivateKey, PublicKey, type RevShareCallback, Schedule, SdkError, type SdkErrorCode, type SdkOptions, Title, userKeys };