import { ISubmittableResult } from '@polkadot/types/types';
import { Asset, AuthorizationRequest, CustomPermissionGroup, Identity, KnownPermissionGroup, PostTransactionValue, Procedure } from "../../internal";
import { TransactionPermissions, TxGroup } from "../../types";
import { ProcedureAuthorization } from "../../types/internal";
export declare const createGroupAndAuthorizationResolver: (target: Identity) => (receipt: ISubmittableResult) => Promise<AuthorizationRequest>;
export interface InviteExternalAgentParams {
    target: string | Identity;
    permissions: KnownPermissionGroup | CustomPermissionGroup | {
        transactions: TransactionPermissions;
    } | {
        transactionGroups: TxGroup[];
    };
    /**
     * date at which the authorization request for invitation expires (optional)
     *
     * @note if expiry date is not set, the invitation will never expire
     * @note due to chain limitations, the expiry will be ignored if the passed `permissions` don't correspond to an existing Permission Group
     */
    expiry?: Date;
}
/**
 * @hidden
 */
export declare type Params = InviteExternalAgentParams & {
    ticker: string;
};
/**
 * @hidden
 */
export interface Storage {
    asset: Asset;
}
/**
 * @hidden
 */
export declare function prepareInviteExternalAgent(this: Procedure<Params, AuthorizationRequest, Storage>, args: Params): Promise<PostTransactionValue<AuthorizationRequest>>;
/**
 * @hidden
 */
export declare function getAuthorization(this: Procedure<Params, AuthorizationRequest, Storage>): ProcedureAuthorization;
/**
 * @hidden
 */
export declare function prepareStorage(this: Procedure<Params, AuthorizationRequest, Storage>, { ticker }: Params): Storage;
/**
 * @hidden
 */
export declare const inviteExternalAgent: () => Procedure<Params, AuthorizationRequest, Storage>;
//# sourceMappingURL=inviteExternalAgent.d.ts.map