import type { Address } from 'abitype'; import type { KeyAuthorization } from 'ox/tempo'; import * as Selectors from './Selectors.js'; export type Selector = NonNullable; export type Options = { /** Recipient allowlist for selectors that support recipient restrictions. */ recipients?: readonly Address[] | undefined; }; export type Scope
= Omit & { address: address; recipients?: readonly Address[] | undefined; selector?: selector | undefined; }; export type Target
= { /** Allows any selector on the target. */ any: () => Scope; /** Allows calls matching the selector on the target. */ selector: (selector: selector, options?: Options | undefined) => Scope; }; export type SelectorMap = Record>; export type Contract
= Target
& { readonly [name in keyof selectors]: selectors[name] extends Selector ? (options?: Options | undefined) => Scope : selectors[name] extends Record ? OverloadedSelector : never; }; export type OverloadedSelector
= Record> = { readonly [signature in keyof selectors]: (options?: Options | undefined) => Scope; } & { selector: (signature: signature, options?: Options | undefined) => Scope; }; export type Tip20
= Contract; /** * Creates a call scope builder for an arbitrary target. * * @experimental */ export declare function target
(address: address): Target
; /** * Creates a typed call scope builder from a selector map. * * @experimental */ export declare function contract
(address: address, selectors: selectors): Contract; /** * Creates a call scope builder for a TIP-20 token. * * @experimental */ export declare function tip20
(address: address): Tip20
; //# sourceMappingURL=Scopes.d.ts.map